/**
 *
 */
import OpenApi;
import OpenApi.OpenApiUtil;

extends OpenApi;


init(config: OpenApiUtil.Config){
  super(config);
  @endpointRule = '';
  
  checkConfig(config);
  @endpoint = getEndpoint('aligenie', @regionId, @endpointRule, @network, @suffix, @endpointMap, @endpoint);
}

function getEndpoint(productId: string, regionId: string, endpointRule: string, network: string, suffix: string, endpointMap: map[string]string, endpoint: string) throws: string{
  if (!$isNull(endpoint)) {
    return endpoint;
  }
  
  if (!$isNull(endpointMap) && !$isNull(endpointMap[regionId])) {
    return endpointMap[regionId];
  }
  return OpenApiUtil.getEndpointRules(productId, regionId, endpointRule, network, suffix);
}

model AddCartoonHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model AddCartoonRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0***eb'),
  startVideoMd5?: string(name='StartVideoMd5', description='This parameter is required.', example='40c804***697'),
  startVideoUrl?: string(name='StartVideoUrl', description='This parameter is required.', example='https://***.mp4'),
}

model AddCartoonResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model AddCartoonResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: AddCartoonResponseBody(name='body'),
}

/**
 * @summary 添加动画
 *
 * @param request AddCartoonRequest
 * @param headers AddCartoonHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return AddCartoonResponse
 */
async function addCartoonWithOptions(request: AddCartoonRequest, headers: AddCartoonHeaders, runtime: $RuntimeOptions): AddCartoonResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.startVideoMd5)) {
    body['StartVideoMd5'] = request.startVideoMd5;
  }
  if (!$isNull(request.startVideoUrl)) {
    body['StartVideoUrl'] = request.startVideoUrl;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'AddCartoon',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/addCartoon`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 添加动画
 *
 * @param request AddCartoonRequest
 * @return AddCartoonResponse
 */
async function addCartoon(request: AddCartoonRequest): AddCartoonResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new AddCartoonHeaders{};
  return addCartoonWithOptions(request, headers, runtime);
}

model AddCustomQAHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model AddCustomQARequest {
  answers?: [ string ](name='Answers'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a3***013'),
  keyWords?: [ string ](name='KeyWords'),
  majorQuestion?: string(name='MajorQuestion', example='***'),
  supplementaryQuestions?: [ string ](name='SupplementaryQuestions'),
}

model AddCustomQAShrinkRequest {
  answersShrink?: string(name='Answers'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a3***013'),
  keyWordsShrink?: string(name='KeyWords'),
  majorQuestion?: string(name='MajorQuestion', example='***'),
  supplementaryQuestionsShrink?: string(name='SupplementaryQuestions'),
}

model AddCustomQAResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7***726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model AddCustomQAResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: AddCustomQAResponseBody(name='body'),
}

/**
 * @summary 新增自定义问答
 *
 * @param tmpReq AddCustomQARequest
 * @param headers AddCustomQAHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return AddCustomQAResponse
 */
async function addCustomQAWithOptions(tmpReq: AddCustomQARequest, headers: AddCustomQAHeaders, runtime: $RuntimeOptions): AddCustomQAResponse {
  tmpReq.validate();
  var request = new AddCustomQAShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.answers)) {
    request.answersShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.answers, 'Answers', 'json');
  }
  if (!$isNull(tmpReq.keyWords)) {
    request.keyWordsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.keyWords, 'KeyWords', 'json');
  }
  if (!$isNull(tmpReq.supplementaryQuestions)) {
    request.supplementaryQuestionsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.supplementaryQuestions, 'SupplementaryQuestions', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.answersShrink)) {
    body['Answers'] = request.answersShrink;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.keyWordsShrink)) {
    body['KeyWords'] = request.keyWordsShrink;
  }
  if (!$isNull(request.majorQuestion)) {
    body['MajorQuestion'] = request.majorQuestion;
  }
  if (!$isNull(request.supplementaryQuestionsShrink)) {
    body['SupplementaryQuestions'] = request.supplementaryQuestionsShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'AddCustomQA',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/addCustomQA`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 新增自定义问答
 *
 * @param request AddCustomQARequest
 * @return AddCustomQAResponse
 */
async function addCustomQA(request: AddCustomQARequest): AddCustomQAResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new AddCustomQAHeaders{};
  return addCustomQAWithOptions(request, headers, runtime);
}

model AddCustomQAV2Headers {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model AddCustomQAV2Request {
  answers?: [ string ](name='Answers', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0c0***5eb'),
  keyWords?: [ string ](name='KeyWords'),
  majorQuestion?: string(name='MajorQuestion'),
  supplementaryQuestions?: [ string ](name='SupplementaryQuestions'),
}

model AddCustomQAV2ShrinkRequest {
  answersShrink?: string(name='Answers', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0c0***5eb'),
  keyWordsShrink?: string(name='KeyWords'),
  majorQuestion?: string(name='MajorQuestion'),
  supplementaryQuestionsShrink?: string(name='SupplementaryQuestions'),
}

model AddCustomQAV2ResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='FAFCD152-4791-5F2F-B0BE-2DC06FD4F05B'),
  result?: {
    answers?: string(name='Answers'),
    createTime?: string(name='CreateTime', example='2023-01-10 10:01:59'),
    hotelId?: string(name='HotelId', example='a7***83'),
    keyWords?: string(name='KeyWords'),
    lastOperator?: string(name='LastOperator', example='8xxx9'),
    majorQuestion?: string(name='MajorQuestion'),
    qaId?: string(name='QaId', description='qaID', example='1'),
    status?: int32(name='Status', example='0'),
    supplementaryQuestion?: string(name='SupplementaryQuestion'),
    updateTime?: string(name='UpdateTime', example='2023-01-10 10:01:59'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model AddCustomQAV2Response = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: AddCustomQAV2ResponseBody(name='body'),
}

/**
 * @summary 添加问答V2
 *
 * @param tmpReq AddCustomQAV2Request
 * @param headers AddCustomQAV2Headers
 * @param runtime runtime options for this request RuntimeOptions
 * @return AddCustomQAV2Response
 */
async function addCustomQAV2WithOptions(tmpReq: AddCustomQAV2Request, headers: AddCustomQAV2Headers, runtime: $RuntimeOptions): AddCustomQAV2Response {
  tmpReq.validate();
  var request = new AddCustomQAV2ShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.answers)) {
    request.answersShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.answers, 'Answers', 'json');
  }
  if (!$isNull(tmpReq.keyWords)) {
    request.keyWordsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.keyWords, 'KeyWords', 'json');
  }
  if (!$isNull(tmpReq.supplementaryQuestions)) {
    request.supplementaryQuestionsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.supplementaryQuestions, 'SupplementaryQuestions', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.answersShrink)) {
    body['Answers'] = request.answersShrink;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.keyWordsShrink)) {
    body['KeyWords'] = request.keyWordsShrink;
  }
  if (!$isNull(request.majorQuestion)) {
    body['MajorQuestion'] = request.majorQuestion;
  }
  if (!$isNull(request.supplementaryQuestionsShrink)) {
    body['SupplementaryQuestions'] = request.supplementaryQuestionsShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'AddCustomQAV2',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/addQAV2`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 添加问答V2
 *
 * @param request AddCustomQAV2Request
 * @return AddCustomQAV2Response
 */
async function addCustomQAV2(request: AddCustomQAV2Request): AddCustomQAV2Response {
  var runtime = new $RuntimeOptions{};
  var headers = new AddCustomQAV2Headers{};
  return addCustomQAV2WithOptions(request, headers, runtime);
}

model AddMessageTemplateHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model AddMessageTemplateRequest {
  templateDetail?: string(name='TemplateDetail', description='This parameter is required.', example='这是${hotel}的一个测试模板'),
  templateName?: string(name='TemplateName', description='This parameter is required.', example='测试模板'),
}

model AddMessageTemplateResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId'),
  result?: long(name='Result', example='11'),
}

model AddMessageTemplateResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: AddMessageTemplateResponseBody(name='body'),
}

/**
 * @summary 添加消息模板
 *
 * @param request AddMessageTemplateRequest
 * @param headers AddMessageTemplateHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return AddMessageTemplateResponse
 */
async function addMessageTemplateWithOptions(request: AddMessageTemplateRequest, headers: AddMessageTemplateHeaders, runtime: $RuntimeOptions): AddMessageTemplateResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.templateDetail)) {
    body['TemplateDetail'] = request.templateDetail;
  }
  if (!$isNull(request.templateName)) {
    body['TemplateName'] = request.templateName;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'AddMessageTemplate',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/addMessageTemplate`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 添加消息模板
 *
 * @param request AddMessageTemplateRequest
 * @return AddMessageTemplateResponse
 */
async function addMessageTemplate(request: AddMessageTemplateRequest): AddMessageTemplateResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new AddMessageTemplateHeaders{};
  return addMessageTemplateWithOptions(request, headers, runtime);
}

model AddOrUpdateDisPlayModesHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model AddOrUpdateDisPlayModesRequest {
  hotelDeviceModeList?: [ string ](name='HotelDeviceModeList', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
}

model AddOrUpdateDisPlayModesShrinkRequest {
  hotelDeviceModeListShrink?: string(name='HotelDeviceModeList', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
}

model AddOrUpdateDisPlayModesResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model AddOrUpdateDisPlayModesResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: AddOrUpdateDisPlayModesResponseBody(name='body'),
}

/**
 * @summary 新增或者编辑带屏展示模式
 *
 * @param tmpReq AddOrUpdateDisPlayModesRequest
 * @param headers AddOrUpdateDisPlayModesHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return AddOrUpdateDisPlayModesResponse
 */
async function addOrUpdateDisPlayModesWithOptions(tmpReq: AddOrUpdateDisPlayModesRequest, headers: AddOrUpdateDisPlayModesHeaders, runtime: $RuntimeOptions): AddOrUpdateDisPlayModesResponse {
  tmpReq.validate();
  var request = new AddOrUpdateDisPlayModesShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.hotelDeviceModeList)) {
    request.hotelDeviceModeListShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.hotelDeviceModeList, 'HotelDeviceModeList', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelDeviceModeListShrink)) {
    body['HotelDeviceModeList'] = request.hotelDeviceModeListShrink;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'AddOrUpdateDisPlayModes',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/addOrUpdateDisPlayModes`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 新增或者编辑带屏展示模式
 *
 * @param request AddOrUpdateDisPlayModesRequest
 * @return AddOrUpdateDisPlayModesResponse
 */
async function addOrUpdateDisPlayModes(request: AddOrUpdateDisPlayModesRequest): AddOrUpdateDisPlayModesResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new AddOrUpdateDisPlayModesHeaders{};
  return addOrUpdateDisPlayModesWithOptions(request, headers, runtime);
}

model AddOrUpdateHotelSettingHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model AddOrUpdateHotelSettingRequest {
  hotelDeviceModeList?: [ string ](name='HotelDeviceModeList'),
  hotelId?: string(name='HotelId', example='a7a3***013'),
  hotelScreenSaver?: {
    screenSaverPicUrl?: string(name='ScreenSaverPicUrl', example='https://a****jpg'),
    screenSaverStyle?: string(name='ScreenSaverStyle', example='common-weather'),
  }(name='HotelScreenSaver'),
  nightMode?: {
    defaultBright?: string(name='DefaultBright'),
    defaultVolume?: string(name='DefaultVolume'),
    enable?: boolean(name='Enable', example='true'),
    end?: string(name='End', example='22:00'),
    standbyAction?: string(name='StandbyAction', example='screenoff'),
    start?: string(name='Start', example='7:00'),
  }(name='NightMode'),
  settingType?: string(name='SettingType', example='SCREENSAVER'),
  value?: string(name='Value'),
}

model AddOrUpdateHotelSettingShrinkRequest {
  hotelDeviceModeListShrink?: string(name='HotelDeviceModeList'),
  hotelId?: string(name='HotelId', example='a7a3***013'),
  hotelScreenSaverShrink?: string(name='HotelScreenSaver'),
  nightModeShrink?: string(name='NightMode'),
  settingType?: string(name='SettingType', example='SCREENSAVER'),
  value?: string(name='Value'),
}

model AddOrUpdateHotelSettingResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model AddOrUpdateHotelSettingResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: AddOrUpdateHotelSettingResponseBody(name='body'),
}

/**
 * @summary 新增或者编辑定制配置
 *
 * @param tmpReq AddOrUpdateHotelSettingRequest
 * @param headers AddOrUpdateHotelSettingHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return AddOrUpdateHotelSettingResponse
 */
async function addOrUpdateHotelSettingWithOptions(tmpReq: AddOrUpdateHotelSettingRequest, headers: AddOrUpdateHotelSettingHeaders, runtime: $RuntimeOptions): AddOrUpdateHotelSettingResponse {
  tmpReq.validate();
  var request = new AddOrUpdateHotelSettingShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.hotelDeviceModeList)) {
    request.hotelDeviceModeListShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.hotelDeviceModeList, 'HotelDeviceModeList', 'json');
  }
  if (!$isNull(tmpReq.hotelScreenSaver)) {
    request.hotelScreenSaverShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.hotelScreenSaver, 'HotelScreenSaver', 'json');
  }
  if (!$isNull(tmpReq.nightMode)) {
    request.nightModeShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.nightMode, 'NightMode', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelDeviceModeListShrink)) {
    body['HotelDeviceModeList'] = request.hotelDeviceModeListShrink;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.hotelScreenSaverShrink)) {
    body['HotelScreenSaver'] = request.hotelScreenSaverShrink;
  }
  if (!$isNull(request.nightModeShrink)) {
    body['NightMode'] = request.nightModeShrink;
  }
  if (!$isNull(request.settingType)) {
    body['SettingType'] = request.settingType;
  }
  if (!$isNull(request.value)) {
    body['Value'] = request.value;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'AddOrUpdateHotelSetting',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/addOrUpdateHotelSetting`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 新增或者编辑定制配置
 *
 * @param request AddOrUpdateHotelSettingRequest
 * @return AddOrUpdateHotelSettingResponse
 */
async function addOrUpdateHotelSetting(request: AddOrUpdateHotelSettingRequest): AddOrUpdateHotelSettingResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new AddOrUpdateHotelSettingHeaders{};
  return addOrUpdateHotelSettingWithOptions(request, headers, runtime);
}

model AddOrUpdateScreenSaverHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model AddOrUpdateScreenSaverRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a3***013'),
  hotelScreenSaver?: {
    screenSaverPicUrl?: string(name='ScreenSaverPicUrl', example='xxx.png'),
    screenSaverStyle?: string(name='ScreenSaverStyle', example='common-weather'),
  }(name='HotelScreenSaver', description='This parameter is required.'),
}

model AddOrUpdateScreenSaverShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a3***013'),
  hotelScreenSaverShrink?: string(name='HotelScreenSaver', description='This parameter is required.'),
}

model AddOrUpdateScreenSaverResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='4EED***9661'),
  result?: boolean(name='Result', example='True'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model AddOrUpdateScreenSaverResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: AddOrUpdateScreenSaverResponseBody(name='body'),
}

/**
 * @summary 新增或者编辑带屏屏保
 *
 * @param tmpReq AddOrUpdateScreenSaverRequest
 * @param headers AddOrUpdateScreenSaverHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return AddOrUpdateScreenSaverResponse
 */
async function addOrUpdateScreenSaverWithOptions(tmpReq: AddOrUpdateScreenSaverRequest, headers: AddOrUpdateScreenSaverHeaders, runtime: $RuntimeOptions): AddOrUpdateScreenSaverResponse {
  tmpReq.validate();
  var request = new AddOrUpdateScreenSaverShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.hotelScreenSaver)) {
    request.hotelScreenSaverShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.hotelScreenSaver, 'HotelScreenSaver', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.hotelScreenSaverShrink)) {
    body['HotelScreenSaver'] = request.hotelScreenSaverShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'AddOrUpdateScreenSaver',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/addOrUpdateScreenSaver`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 新增或者编辑带屏屏保
 *
 * @param request AddOrUpdateScreenSaverRequest
 * @return AddOrUpdateScreenSaverResponse
 */
async function addOrUpdateScreenSaver(request: AddOrUpdateScreenSaverRequest): AddOrUpdateScreenSaverResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new AddOrUpdateScreenSaverHeaders{};
  return addOrUpdateScreenSaverWithOptions(request, headers, runtime);
}

model AddOrUpdateWelcomeTextHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model AddOrUpdateWelcomeTextRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  musicUrl?: string(name='MusicUrl', description='This parameter is required.', example='http://ailabsaicloudservice.alicdn.com/tmp/a.wav'),
  welcomeText?: string(name='WelcomeText', description='This parameter is required.'),
}

model AddOrUpdateWelcomeTextResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model AddOrUpdateWelcomeTextResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: AddOrUpdateWelcomeTextResponseBody(name='body'),
}

/**
 * @summary 添加/更新欢迎语信息
 *
 * @param request AddOrUpdateWelcomeTextRequest
 * @param headers AddOrUpdateWelcomeTextHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return AddOrUpdateWelcomeTextResponse
 */
async function addOrUpdateWelcomeTextWithOptions(request: AddOrUpdateWelcomeTextRequest, headers: AddOrUpdateWelcomeTextHeaders, runtime: $RuntimeOptions): AddOrUpdateWelcomeTextResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.musicUrl)) {
    body['MusicUrl'] = request.musicUrl;
  }
  if (!$isNull(request.welcomeText)) {
    body['WelcomeText'] = request.welcomeText;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'AddOrUpdateWelcomeText',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/addOrUpdateWelcomeText`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 添加/更新欢迎语信息
 *
 * @param request AddOrUpdateWelcomeTextRequest
 * @return AddOrUpdateWelcomeTextResponse
 */
async function addOrUpdateWelcomeText(request: AddOrUpdateWelcomeTextRequest): AddOrUpdateWelcomeTextResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new AddOrUpdateWelcomeTextHeaders{};
  return addOrUpdateWelcomeTextWithOptions(request, headers, runtime);
}

model AuditHotelHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model AuditHotelRequest {
  auditHotelReq?: {
    auditOpinion?: string(name='AuditOpinion', example='同意'),
    hotelId?: string(name='HotelId', description='This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
    status?: int32(name='Status', description='This parameter is required.', example='1'),
  }(name='AuditHotelReq', description='This parameter is required.'),
}

model AuditHotelShrinkRequest {
  auditHotelReqShrink?: string(name='AuditHotelReq', description='This parameter is required.'),
}

model AuditHotelResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message'),
  requestId?: string(name='RequestId', description='RequestId'),
  result?: boolean(name='Result'),
}

model AuditHotelResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: AuditHotelResponseBody(name='body'),
}

/**
 * @summary 审批酒店
 *
 * @param tmpReq AuditHotelRequest
 * @param headers AuditHotelHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return AuditHotelResponse
 */
async function auditHotelWithOptions(tmpReq: AuditHotelRequest, headers: AuditHotelHeaders, runtime: $RuntimeOptions): AuditHotelResponse {
  tmpReq.validate();
  var request = new AuditHotelShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.auditHotelReq)) {
    request.auditHotelReqShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.auditHotelReq, 'AuditHotelReq', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.auditHotelReqShrink)) {
    query['AuditHotelReq'] = request.auditHotelReqShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'AuditHotel',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/auditHotel`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 审批酒店
 *
 * @param request AuditHotelRequest
 * @return AuditHotelResponse
 */
async function auditHotel(request: AuditHotelRequest): AuditHotelResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new AuditHotelHeaders{};
  return auditHotelWithOptions(request, headers, runtime);
}

model BatchAddHotelRoomHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model BatchAddHotelRoomRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='e6dd44fd16084db8a60d69fd625d9f0f'),
  roomNoList?: [ string ](name='RoomNoList', description='This parameter is required.'),
}

model BatchAddHotelRoomShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='e6dd44fd16084db8a60d69fd625d9f0f'),
  roomNoListShrink?: string(name='RoomNoList', description='This parameter is required.'),
}

model BatchAddHotelRoomResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId'),
  result?: boolean(name='Result'),
}

model BatchAddHotelRoomResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: BatchAddHotelRoomResponseBody(name='body'),
}

/**
 * @summary 批量创建房间
 *
 * @param tmpReq BatchAddHotelRoomRequest
 * @param headers BatchAddHotelRoomHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return BatchAddHotelRoomResponse
 */
async function batchAddHotelRoomWithOptions(tmpReq: BatchAddHotelRoomRequest, headers: BatchAddHotelRoomHeaders, runtime: $RuntimeOptions): BatchAddHotelRoomResponse {
  tmpReq.validate();
  var request = new BatchAddHotelRoomShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.roomNoList)) {
    request.roomNoListShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.roomNoList, 'RoomNoList', 'simple');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNoListShrink)) {
    body['RoomNoList'] = request.roomNoListShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'BatchAddHotelRoom',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/batchAddHotelRoom`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 批量创建房间
 *
 * @param request BatchAddHotelRoomRequest
 * @return BatchAddHotelRoomResponse
 */
async function batchAddHotelRoom(request: BatchAddHotelRoomRequest): BatchAddHotelRoomResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new BatchAddHotelRoomHeaders{};
  return batchAddHotelRoomWithOptions(request, headers, runtime);
}

model BatchDeleteHotelRoomHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model BatchDeleteHotelRoomRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='e6dd44fd16084db8a60d69fd625d9f0f'),
  roomNoList?: [ string ](name='RoomNoList', description='This parameter is required.'),
}

model BatchDeleteHotelRoomShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='e6dd44fd16084db8a60d69fd625d9f0f'),
  roomNoListShrink?: string(name='RoomNoList', description='This parameter is required.'),
}

model BatchDeleteHotelRoomResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId'),
  result?: boolean(name='Result'),
}

model BatchDeleteHotelRoomResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: BatchDeleteHotelRoomResponseBody(name='body'),
}

/**
 * @summary 批量删除房间
 *
 * @param tmpReq BatchDeleteHotelRoomRequest
 * @param headers BatchDeleteHotelRoomHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return BatchDeleteHotelRoomResponse
 */
async function batchDeleteHotelRoomWithOptions(tmpReq: BatchDeleteHotelRoomRequest, headers: BatchDeleteHotelRoomHeaders, runtime: $RuntimeOptions): BatchDeleteHotelRoomResponse {
  tmpReq.validate();
  var request = new BatchDeleteHotelRoomShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.roomNoList)) {
    request.roomNoListShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.roomNoList, 'RoomNoList', 'simple');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNoListShrink)) {
    body['RoomNoList'] = request.roomNoListShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'BatchDeleteHotelRoom',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/batchDeleteHotelRoom`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 批量删除房间
 *
 * @param request BatchDeleteHotelRoomRequest
 * @return BatchDeleteHotelRoomResponse
 */
async function batchDeleteHotelRoom(request: BatchDeleteHotelRoomRequest): BatchDeleteHotelRoomResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new BatchDeleteHotelRoomHeaders{};
  return batchDeleteHotelRoomWithOptions(request, headers, runtime);
}

model CheckoutWithAKHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model CheckoutWithAKRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
}

model CheckoutWithAKResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C6***E6FA'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model CheckoutWithAKResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CheckoutWithAKResponseBody(name='body'),
}

/**
 * @summary 酒店退房，清楚例如闹钟等定时信息
 *
 * @param request CheckoutWithAKRequest
 * @param headers CheckoutWithAKHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return CheckoutWithAKResponse
 */
async function checkoutWithAKWithOptions(request: CheckoutWithAKRequest, headers: CheckoutWithAKHeaders, runtime: $RuntimeOptions): CheckoutWithAKResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'CheckoutWithAK',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/checkoutWithAK`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店退房，清楚例如闹钟等定时信息
 *
 * @param request CheckoutWithAKRequest
 * @return CheckoutWithAKResponse
 */
async function checkoutWithAK(request: CheckoutWithAKRequest): CheckoutWithAKResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new CheckoutWithAKHeaders{};
  return checkoutWithAKWithOptions(request, headers, runtime);
}

model ChildAccountAuthHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ChildAccountAuthRequest {
  account?: string(name='Account', description='This parameter is required.', example='lee'),
  appKey?: string(name='AppKey', description='This parameter is required.', example='30471753'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
  tbOpenId?: string(name='TbOpenId', description='This parameter is required.', example='AAEV***E3d3Z2ETwh'),
}

model ChildAccountAuthResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='3DB51A10-327C-58D3-91DF-3A5A471C51E7'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ChildAccountAuthResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ChildAccountAuthResponseBody(name='body'),
}

/**
 * @summary 子账号授权
 *
 * @param request ChildAccountAuthRequest
 * @param headers ChildAccountAuthHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ChildAccountAuthResponse
 */
async function childAccountAuthWithOptions(request: ChildAccountAuthRequest, headers: ChildAccountAuthHeaders, runtime: $RuntimeOptions): ChildAccountAuthResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.account)) {
    body['Account'] = request.account;
  }
  if (!$isNull(request.appKey)) {
    body['AppKey'] = request.appKey;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.tbOpenId)) {
    body['TbOpenId'] = request.tbOpenId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ChildAccountAuth',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/childAccountAuth`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 子账号授权
 *
 * @param request ChildAccountAuthRequest
 * @return ChildAccountAuthResponse
 */
async function childAccountAuth(request: ChildAccountAuthRequest): ChildAccountAuthResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ChildAccountAuthHeaders{};
  return childAccountAuthWithOptions(request, headers, runtime);
}

model ControlRoomDeviceHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ControlRoomDeviceRequest {
  cmd?: string(name='Cmd', description='This parameter is required.', example='thing.attribute.set
thing.attribute.adjust'),
  deviceIndex?: int32(name='DeviceIndex'),
  deviceNumber?: string(name='DeviceNumber', description='This parameter is required.', example='INFRARED49122575595'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
  properties?: map[string]string(name='Properties', description='This parameter is required.'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
}

model ControlRoomDeviceShrinkRequest {
  cmd?: string(name='Cmd', description='This parameter is required.', example='thing.attribute.set
thing.attribute.adjust'),
  deviceIndex?: int32(name='DeviceIndex'),
  deviceNumber?: string(name='DeviceNumber', description='This parameter is required.', example='INFRARED49122575595'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
  propertiesShrink?: string(name='Properties', description='This parameter is required.'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
}

model ControlRoomDeviceResponseBody = {
  code?: int32(name='Code'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7***726E'),
  result?: {
    message?: string(name='Message', example='success'),
    status?: int32(name='Status'),
  }(name='Result'),
}

model ControlRoomDeviceResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ControlRoomDeviceResponseBody(name='body'),
}

/**
 * @summary 控制房间内设备
 *
 * @param tmpReq ControlRoomDeviceRequest
 * @param headers ControlRoomDeviceHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ControlRoomDeviceResponse
 */
async function controlRoomDeviceWithOptions(tmpReq: ControlRoomDeviceRequest, headers: ControlRoomDeviceHeaders, runtime: $RuntimeOptions): ControlRoomDeviceResponse {
  tmpReq.validate();
  var request = new ControlRoomDeviceShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.properties)) {
    request.propertiesShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.properties, 'Properties', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.cmd)) {
    body['Cmd'] = request.cmd;
  }
  if (!$isNull(request.deviceIndex)) {
    body['DeviceIndex'] = request.deviceIndex;
  }
  if (!$isNull(request.deviceNumber)) {
    body['DeviceNumber'] = request.deviceNumber;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.propertiesShrink)) {
    body['Properties'] = request.propertiesShrink;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ControlRoomDevice',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/controlRoomDevice`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 控制房间内设备
 *
 * @param request ControlRoomDeviceRequest
 * @return ControlRoomDeviceResponse
 */
async function controlRoomDevice(request: ControlRoomDeviceRequest): ControlRoomDeviceResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ControlRoomDeviceHeaders{};
  return controlRoomDeviceWithOptions(request, headers, runtime);
}

model CreateHotelHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model CreateHotelRequest {
  appKey?: string(name='AppKey', description='This parameter is required.', example='333566791'),
  estOpenTime?: string(name='EstOpenTime', description='This parameter is required.', example='2022-10-1 00:00:00'),
  hotelAddress?: string(name='HotelAddress', description='This parameter is required.'),
  hotelEmail?: string(name='HotelEmail', description='This parameter is required.', example='test@hotel.com'),
  hotelName?: string(name='HotelName', description='This parameter is required.'),
  phoneNumber?: string(name='PhoneNumber', description='This parameter is required.', example='13xxxxxxxx'),
  relatedPk?: string(name='RelatedPk', description='This parameter is required.', example='jTO****Rw'),
  relatedPks?: [ string ](name='RelatedPks', description='酒店关联产品列表'),
  remark?: string(name='Remark', example='test'),
  roomNum?: int32(name='RoomNum', description='This parameter is required.', example='100'),
  tbOpenId?: string(name='TbOpenId', description='This parameter is required.', example='AAEV***E3d3Z2ETwh'),
}

model CreateHotelShrinkRequest {
  appKey?: string(name='AppKey', description='This parameter is required.', example='333566791'),
  estOpenTime?: string(name='EstOpenTime', description='This parameter is required.', example='2022-10-1 00:00:00'),
  hotelAddress?: string(name='HotelAddress', description='This parameter is required.'),
  hotelEmail?: string(name='HotelEmail', description='This parameter is required.', example='test@hotel.com'),
  hotelName?: string(name='HotelName', description='This parameter is required.'),
  phoneNumber?: string(name='PhoneNumber', description='This parameter is required.', example='13xxxxxxxx'),
  relatedPk?: string(name='RelatedPk', description='This parameter is required.', example='jTO****Rw'),
  relatedPksShrink?: string(name='RelatedPks', description='酒店关联产品列表'),
  remark?: string(name='Remark', example='test'),
  roomNum?: int32(name='RoomNum', description='This parameter is required.', example='100'),
  tbOpenId?: string(name='TbOpenId', description='This parameter is required.', example='AAEV***E3d3Z2ETwh'),
}

model CreateHotelResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C67BD9-175A-1324-8202-9FAABBB3E6FA'),
  result?: string(name='Result', example='5abfd9***2c38661'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model CreateHotelResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CreateHotelResponseBody(name='body'),
}

/**
 * @summary 创建酒店项目
 *
 * @param tmpReq CreateHotelRequest
 * @param headers CreateHotelHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return CreateHotelResponse
 */
async function createHotelWithOptions(tmpReq: CreateHotelRequest, headers: CreateHotelHeaders, runtime: $RuntimeOptions): CreateHotelResponse {
  tmpReq.validate();
  var request = new CreateHotelShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.relatedPks)) {
    request.relatedPksShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.relatedPks, 'RelatedPks', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.appKey)) {
    body['AppKey'] = request.appKey;
  }
  if (!$isNull(request.estOpenTime)) {
    body['EstOpenTime'] = request.estOpenTime;
  }
  if (!$isNull(request.hotelAddress)) {
    body['HotelAddress'] = request.hotelAddress;
  }
  if (!$isNull(request.hotelEmail)) {
    body['HotelEmail'] = request.hotelEmail;
  }
  if (!$isNull(request.hotelName)) {
    body['HotelName'] = request.hotelName;
  }
  if (!$isNull(request.phoneNumber)) {
    body['PhoneNumber'] = request.phoneNumber;
  }
  if (!$isNull(request.relatedPk)) {
    body['RelatedPk'] = request.relatedPk;
  }
  if (!$isNull(request.relatedPksShrink)) {
    body['RelatedPks'] = request.relatedPksShrink;
  }
  if (!$isNull(request.remark)) {
    body['Remark'] = request.remark;
  }
  if (!$isNull(request.roomNum)) {
    body['RoomNum'] = request.roomNum;
  }
  if (!$isNull(request.tbOpenId)) {
    body['TbOpenId'] = request.tbOpenId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'CreateHotel',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/createHotel`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 创建酒店项目
 *
 * @param request CreateHotelRequest
 * @return CreateHotelResponse
 */
async function createHotel(request: CreateHotelRequest): CreateHotelResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new CreateHotelHeaders{};
  return createHotelWithOptions(request, headers, runtime);
}

model CreateHotelAlarmHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model CreateHotelAlarmRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='cf2446fc9d144c85aaee4f9ae20a96e7'),
  musicType?: string(name='MusicType', example='DOU_YIN'),
  rooms?: [ string ](name='Rooms', description='This parameter is required.'),
  scheduleInfo?: {
    once?: {
      day?: int32(name='Day', example='20'),
      hour?: int32(name='Hour', example='19'),
      minute?: int32(name='Minute', example='30'),
      month?: int32(name='Month', example='9'),
      year?: int32(name='Year', example='2022'),
    }(name='Once'),
    type?: string(name='Type', description='ONCE, WEEKLY

This parameter is required.'),
    weekly?: {
      daysOfWeek?: [ int32 ](name='DaysOfWeek'),
      hour?: int32(name='Hour', example='10'),
      minute?: int32(name='Minute', example='30'),
    }(name='Weekly'),
  }(name='ScheduleInfo', description='This parameter is required.'),
}

model CreateHotelAlarmShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='cf2446fc9d144c85aaee4f9ae20a96e7'),
  musicType?: string(name='MusicType', example='DOU_YIN'),
  roomsShrink?: string(name='Rooms', description='This parameter is required.'),
  scheduleInfoShrink?: string(name='ScheduleInfo', description='This parameter is required.'),
}

model CreateHotelAlarmResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message'),
  requestId?: string(name='RequestId', example='43***86881'),
  result?: [ 
    {
      alarmId?: long(name='AlarmId', example='94'),
      deviceOpenId?: string(name='DeviceOpenId', example='Pvk***TA=='),
      failMsg?: string(name='FailMsg'),
      roomNo?: string(name='RoomNo', example='101'),
      userOpenId?: string(name='UserOpenId', example='mg***Qd'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model CreateHotelAlarmResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CreateHotelAlarmResponseBody(name='body'),
}

/**
 * @summary 批量创建闹钟
 *
 * @param tmpReq CreateHotelAlarmRequest
 * @param headers CreateHotelAlarmHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return CreateHotelAlarmResponse
 */
async function createHotelAlarmWithOptions(tmpReq: CreateHotelAlarmRequest, headers: CreateHotelAlarmHeaders, runtime: $RuntimeOptions): CreateHotelAlarmResponse {
  tmpReq.validate();
  var request = new CreateHotelAlarmShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.rooms)) {
    request.roomsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.rooms, 'Rooms', 'json');
  }
  if (!$isNull(tmpReq.scheduleInfo)) {
    request.scheduleInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.scheduleInfo, 'ScheduleInfo', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.musicType)) {
    body['MusicType'] = request.musicType;
  }
  if (!$isNull(request.roomsShrink)) {
    body['Rooms'] = request.roomsShrink;
  }
  if (!$isNull(request.scheduleInfoShrink)) {
    body['ScheduleInfo'] = request.scheduleInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'CreateHotelAlarm',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/createHotelAlarm`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 批量创建闹钟
 *
 * @param request CreateHotelAlarmRequest
 * @return CreateHotelAlarmResponse
 */
async function createHotelAlarm(request: CreateHotelAlarmRequest): CreateHotelAlarmResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new CreateHotelAlarmHeaders{};
  return createHotelAlarmWithOptions(request, headers, runtime);
}

model CreateRcuSceneHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model CreateRcuSceneRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0c0***5eb'),
  sceneId?: string(name='SceneId', description='This parameter is required.', example='yoga'),
  sceneRelationExtDTO?: {
    corpusList?: [ string ](name='CorpusList', description='This parameter is required.'),
    description?: string(name='Description', description='This parameter is required.'),
    icon?: string(name='Icon', description='This parameter is required.', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/changjingmoshi/shuimian.png'),
    name?: string(name='Name', description='This parameter is required.'),
  }(name='SceneRelationExtDTO', description='This parameter is required.'),
}

model CreateRcuSceneShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0c0***5eb'),
  sceneId?: string(name='SceneId', description='This parameter is required.', example='yoga'),
  sceneRelationExtDTOShrink?: string(name='SceneRelationExtDTO', description='This parameter is required.'),
}

model CreateRcuSceneResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='844BA5CE-E30A-53CB-8A11-DE1F344C846D'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model CreateRcuSceneResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: CreateRcuSceneResponseBody(name='body'),
}

/**
 * @summary 酒店rcu自定义场景创建
 *
 * @param tmpReq CreateRcuSceneRequest
 * @param headers CreateRcuSceneHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return CreateRcuSceneResponse
 */
async function createRcuSceneWithOptions(tmpReq: CreateRcuSceneRequest, headers: CreateRcuSceneHeaders, runtime: $RuntimeOptions): CreateRcuSceneResponse {
  tmpReq.validate();
  var request = new CreateRcuSceneShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.sceneRelationExtDTO)) {
    request.sceneRelationExtDTOShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.sceneRelationExtDTO, 'SceneRelationExtDTO', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.sceneId)) {
    body['SceneId'] = request.sceneId;
  }
  if (!$isNull(request.sceneRelationExtDTOShrink)) {
    body['SceneRelationExtDTO'] = request.sceneRelationExtDTOShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'CreateRcuScene',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/createRcuScene`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店rcu自定义场景创建
 *
 * @param request CreateRcuSceneRequest
 * @return CreateRcuSceneResponse
 */
async function createRcuScene(request: CreateRcuSceneRequest): CreateRcuSceneResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new CreateRcuSceneHeaders{};
  return createRcuSceneWithOptions(request, headers, runtime);
}

model DeleteCartoonHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model DeleteCartoonRequest {
  hotelId?: string(name='HotelId', example='a7***83'),
}

model DeleteCartoonResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model DeleteCartoonResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteCartoonResponseBody(name='body'),
}

/**
 * @summary 删除动画
 *
 * @param request DeleteCartoonRequest
 * @param headers DeleteCartoonHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteCartoonResponse
 */
async function deleteCartoonWithOptions(request: DeleteCartoonRequest, headers: DeleteCartoonHeaders, runtime: $RuntimeOptions): DeleteCartoonResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'DeleteCartoon',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/deleteCartoon`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 删除动画
 *
 * @param request DeleteCartoonRequest
 * @return DeleteCartoonResponse
 */
async function deleteCartoon(request: DeleteCartoonRequest): DeleteCartoonResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new DeleteCartoonHeaders{};
  return deleteCartoonWithOptions(request, headers, runtime);
}

model DeleteCustomQAHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model DeleteCustomQARequest {
  customQAIds?: [ string ](name='CustomQAIds'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a3***013'),
}

model DeleteCustomQAShrinkRequest {
  customQAIdsShrink?: string(name='CustomQAIds'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a3***013'),
}

model DeleteCustomQAResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C6***E6FA'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model DeleteCustomQAResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteCustomQAResponseBody(name='body'),
}

/**
 * @summary 删除自定义问答
 *
 * @param tmpReq DeleteCustomQARequest
 * @param headers DeleteCustomQAHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteCustomQAResponse
 */
async function deleteCustomQAWithOptions(tmpReq: DeleteCustomQARequest, headers: DeleteCustomQAHeaders, runtime: $RuntimeOptions): DeleteCustomQAResponse {
  tmpReq.validate();
  var request = new DeleteCustomQAShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.customQAIds)) {
    request.customQAIdsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.customQAIds, 'CustomQAIds', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.customQAIdsShrink)) {
    body['CustomQAIds'] = request.customQAIdsShrink;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'DeleteCustomQA',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/deleteCustomQA`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 删除自定义问答
 *
 * @param request DeleteCustomQARequest
 * @return DeleteCustomQAResponse
 */
async function deleteCustomQA(request: DeleteCustomQARequest): DeleteCustomQAResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new DeleteCustomQAHeaders{};
  return deleteCustomQAWithOptions(request, headers, runtime);
}

model DeleteHotelAlarmHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model DeleteHotelAlarmRequest {
  alarms?: [ 
    {
      alarmId?: long(name='AlarmId', description='This parameter is required.', example='5029'),
      deviceOpenId?: string(name='DeviceOpenId', description='This parameter is required.', example='PvkB***TA=='),
      roomNo?: string(name='RoomNo', example='101'),
      userOpenId?: string(name='UserOpenId', description='This parameter is required.', example='mgw/k***HQd'),
    }
  ](name='Alarms', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
}

model DeleteHotelAlarmShrinkRequest {
  alarmsShrink?: string(name='Alarms', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
}

model DeleteHotelAlarmResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message'),
  requestId?: string(name='RequestId', example='43***881'),
  result?: int32(name='Result', example='1'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model DeleteHotelAlarmResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteHotelAlarmResponseBody(name='body'),
}

/**
 * @summary 删除酒店闹钟
 *
 * @param tmpReq DeleteHotelAlarmRequest
 * @param headers DeleteHotelAlarmHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteHotelAlarmResponse
 */
async function deleteHotelAlarmWithOptions(tmpReq: DeleteHotelAlarmRequest, headers: DeleteHotelAlarmHeaders, runtime: $RuntimeOptions): DeleteHotelAlarmResponse {
  tmpReq.validate();
  var request = new DeleteHotelAlarmShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.alarms)) {
    request.alarmsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.alarms, 'Alarms', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.alarmsShrink)) {
    body['Alarms'] = request.alarmsShrink;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'DeleteHotelAlarm',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/deleteHotelAlarm`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 删除酒店闹钟
 *
 * @param request DeleteHotelAlarmRequest
 * @return DeleteHotelAlarmResponse
 */
async function deleteHotelAlarm(request: DeleteHotelAlarmRequest): DeleteHotelAlarmResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new DeleteHotelAlarmHeaders{};
  return deleteHotelAlarmWithOptions(request, headers, runtime);
}

model DeleteHotelSceneBookItemHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model DeleteHotelSceneBookItemRequest {
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  id?: long(name='Id', example='11823'),
  name?: string(name='Name'),
}

model DeleteHotelSceneBookItemResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: boolean(name='Result', example='true'),
}

model DeleteHotelSceneBookItemResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteHotelSceneBookItemResponseBody(name='body'),
}

/**
 * @summary 酒店场景预订删除
 *
 * @param request DeleteHotelSceneBookItemRequest
 * @param headers DeleteHotelSceneBookItemHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteHotelSceneBookItemResponse
 */
async function deleteHotelSceneBookItemWithOptions(request: DeleteHotelSceneBookItemRequest, headers: DeleteHotelSceneBookItemHeaders, runtime: $RuntimeOptions): DeleteHotelSceneBookItemResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.id)) {
    body['Id'] = request.id;
  }
  if (!$isNull(request.name)) {
    body['Name'] = request.name;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'DeleteHotelSceneBookItem',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/deleteHotelSceneBookItem`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店场景预订删除
 *
 * @param request DeleteHotelSceneBookItemRequest
 * @return DeleteHotelSceneBookItemResponse
 */
async function deleteHotelSceneBookItem(request: DeleteHotelSceneBookItemRequest): DeleteHotelSceneBookItemResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new DeleteHotelSceneBookItemHeaders{};
  return deleteHotelSceneBookItemWithOptions(request, headers, runtime);
}

model DeleteHotelSettingHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model DeleteHotelSettingRequest {
  hotelId?: string(name='HotelId', example='af7***536'),
  settingType?: string(name='SettingType', example='SCREENSAVER'),
}

model DeleteHotelSettingResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C67****BB3E6FA'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model DeleteHotelSettingResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteHotelSettingResponseBody(name='body'),
}

/**
 * @summary 删除定制配置
 *
 * @param request DeleteHotelSettingRequest
 * @param headers DeleteHotelSettingHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteHotelSettingResponse
 */
async function deleteHotelSettingWithOptions(request: DeleteHotelSettingRequest, headers: DeleteHotelSettingHeaders, runtime: $RuntimeOptions): DeleteHotelSettingResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.settingType)) {
    body['SettingType'] = request.settingType;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'DeleteHotelSetting',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/deleteHotelSetting`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 删除定制配置
 *
 * @param request DeleteHotelSettingRequest
 * @return DeleteHotelSettingResponse
 */
async function deleteHotelSetting(request: DeleteHotelSettingRequest): DeleteHotelSettingResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new DeleteHotelSettingHeaders{};
  return deleteHotelSettingWithOptions(request, headers, runtime);
}

model DeleteMessageTemplateHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model DeleteMessageTemplateRequest {
  templateId?: long(name='TemplateId', example='234'),
}

model DeleteMessageTemplateResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='F7E2****B7C94'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model DeleteMessageTemplateResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteMessageTemplateResponseBody(name='body'),
}

/**
 * @summary 删除消息通知模板
 *
 * @param request DeleteMessageTemplateRequest
 * @param headers DeleteMessageTemplateHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteMessageTemplateResponse
 */
async function deleteMessageTemplateWithOptions(request: DeleteMessageTemplateRequest, headers: DeleteMessageTemplateHeaders, runtime: $RuntimeOptions): DeleteMessageTemplateResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.templateId)) {
    body['TemplateId'] = request.templateId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'DeleteMessageTemplate',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/deleteMessageTemplate`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 删除消息通知模板
 *
 * @param request DeleteMessageTemplateRequest
 * @return DeleteMessageTemplateResponse
 */
async function deleteMessageTemplate(request: DeleteMessageTemplateRequest): DeleteMessageTemplateResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new DeleteMessageTemplateHeaders{};
  return deleteMessageTemplateWithOptions(request, headers, runtime);
}

model DeleteRcuSceneHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model DeleteRcuSceneRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a3***013'),
  sceneId?: string(name='SceneId', description='This parameter is required.', example='yoga'),
}

model DeleteRcuSceneResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='4F61A7B7-409C-525D-AFDB-238A4E88925A'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model DeleteRcuSceneResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeleteRcuSceneResponseBody(name='body'),
}

/**
 * @summary 删除酒店自定义rcu场景
 *
 * @param request DeleteRcuSceneRequest
 * @param headers DeleteRcuSceneHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeleteRcuSceneResponse
 */
async function deleteRcuSceneWithOptions(request: DeleteRcuSceneRequest, headers: DeleteRcuSceneHeaders, runtime: $RuntimeOptions): DeleteRcuSceneResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.sceneId)) {
    body['SceneId'] = request.sceneId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'DeleteRcuScene',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/deleteRcuScene`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 删除酒店自定义rcu场景
 *
 * @param request DeleteRcuSceneRequest
 * @return DeleteRcuSceneResponse
 */
async function deleteRcuScene(request: DeleteRcuSceneRequest): DeleteRcuSceneResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new DeleteRcuSceneHeaders{};
  return deleteRcuSceneWithOptions(request, headers, runtime);
}

model DeviceControlHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model DeviceControlRequest {
  payload?: {
    category?: string(name='Category', description='This parameter is required.', example='aircondition'),
    cmd?: string(name='Cmd', description='This parameter is required.', example='open'),
    deviceNumber?: string(name='DeviceNumber', description='This parameter is required.', example='air_condition'),
    extendInfo?: string(name='ExtendInfo', example='{}'),
    location?: string(name='Location', description='This parameter is required.', example='room'),
    properties?: map[string]string(name='Properties'),
  }(name='Payload'),
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='123'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='HOTEL'),
    id?: string(name='Id', description='This parameter is required.', example='HOFF****my7Iw='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId', example='1**2'),
  }(name='UserInfo'),
}

model DeviceControlShrinkRequest {
  payloadShrink?: string(name='Payload'),
  userInfoShrink?: string(name='UserInfo'),
}

model DeviceControlResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='43***28C-A810-5***-8747-EC226A086881'),
  result?: {
    status?: string(name='Status', example='200'),
  }(name='Result'),
}

model DeviceControlResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: DeviceControlResponseBody(name='body'),
}

/**
 * @summary 设备控制
 *
 * @param tmpReq DeviceControlRequest
 * @param headers DeviceControlHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return DeviceControlResponse
 */
async function deviceControlWithOptions(tmpReq: DeviceControlRequest, headers: DeviceControlHeaders, runtime: $RuntimeOptions): DeviceControlResponse {
  tmpReq.validate();
  var request = new DeviceControlShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.payload)) {
    request.payloadShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.payload, 'Payload', 'json');
  }
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.payloadShrink)) {
    query['Payload'] = request.payloadShrink;
  }
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'DeviceControl',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/deviceControl`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 设备控制
 *
 * @param request DeviceControlRequest
 * @return DeviceControlResponse
 */
async function deviceControl(request: DeviceControlRequest): DeviceControlResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new DeviceControlHeaders{};
  return deviceControlWithOptions(request, headers, runtime);
}

model ExecuteSceneHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ExecuteSceneRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
  sceneName?: string(name='SceneName', description='This parameter is required.'),
}

model ExecuteSceneResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='191C79AD-F9F9-531E-B8C1-73DF6433B920'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ExecuteSceneResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ExecuteSceneResponseBody(name='body'),
}

/**
 * @summary 控制房间场景
 *
 * @param request ExecuteSceneRequest
 * @param headers ExecuteSceneHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ExecuteSceneResponse
 */
async function executeSceneWithOptions(request: ExecuteSceneRequest, headers: ExecuteSceneHeaders, runtime: $RuntimeOptions): ExecuteSceneResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }
  if (!$isNull(request.sceneName)) {
    body['SceneName'] = request.sceneName;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ExecuteScene',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/executeScene`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 控制房间场景
 *
 * @param request ExecuteSceneRequest
 * @return ExecuteSceneResponse
 */
async function executeScene(request: ExecuteSceneRequest): ExecuteSceneResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ExecuteSceneHeaders{};
  return executeSceneWithOptions(request, headers, runtime);
}

model GetBasicInfoQAHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetBasicInfoQARequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
}

model GetBasicInfoQAResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7***726E'),
  result?: {
    checkInTime?: string(name='CheckInTime', example='11:11'),
    checkOutTime?: string(name='CheckOutTime', example='11:11'),
    hotelAddress?: string(name='HotelAddress'),
    hotelIntroduction?: string(name='HotelIntroduction'),
    hotelMember?: string(name='HotelMember'),
    hotelService?: string(name='HotelService'),
    parkingExpenses?: string(name='ParkingExpenses'),
    parkingPosition?: string(name='ParkingPosition'),
    phoneNumber?: string(name='PhoneNumber', example='123***'),
    wifiName?: string(name='WifiName'),
    wifiPassword?: string(name='WifiPassword'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetBasicInfoQAResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetBasicInfoQAResponseBody(name='body'),
}

/**
 * @summary 获取基础信息问答
 *
 * @param request GetBasicInfoQARequest
 * @param headers GetBasicInfoQAHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetBasicInfoQAResponse
 */
async function getBasicInfoQAWithOptions(request: GetBasicInfoQARequest, headers: GetBasicInfoQAHeaders, runtime: $RuntimeOptions): GetBasicInfoQAResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetBasicInfoQA',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getBasicInfoQA`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取基础信息问答
 *
 * @param request GetBasicInfoQARequest
 * @return GetBasicInfoQAResponse
 */
async function getBasicInfoQA(request: GetBasicInfoQARequest): GetBasicInfoQAResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetBasicInfoQAHeaders{};
  return getBasicInfoQAWithOptions(request, headers, runtime);
}

model GetCartoonHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetCartoonRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0c0***5eb'),
}

model GetCartoonResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: {
    startVideoMd5?: string(name='StartVideoMd5', example='https://ai***.mp4'),
    startVideoUrl?: string(name='StartVideoUrl', example='40c8***97'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetCartoonResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetCartoonResponseBody(name='body'),
}

/**
 * @summary 查询动画
 *
 * @param request GetCartoonRequest
 * @param headers GetCartoonHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetCartoonResponse
 */
async function getCartoonWithOptions(request: GetCartoonRequest, headers: GetCartoonHeaders, runtime: $RuntimeOptions): GetCartoonResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetCartoon',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getCartoon`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询动画
 *
 * @param request GetCartoonRequest
 * @return GetCartoonResponse
 */
async function getCartoon(request: GetCartoonRequest): GetCartoonResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetCartoonHeaders{};
  return getCartoonWithOptions(request, headers, runtime);
}

model GetHotelContactByGenieDeviceHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelContactByGenieDeviceRequest {
  deviceInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='12**45'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='HOTEL'),
    id?: string(name='Id', description='This parameter is required.', example='rV/XSgPuxZjx/hN3iw8U+e8ou***lk1r43LWcVW6fvY1Rr4sEPFodpnA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId', example='1**2'),
  }(name='DeviceInfo'),
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='12**45'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='HOTEL'),
    id?: string(name='Id', description='This parameter is required.', example='rV/XSgPuxZjx/hN3iw8U+e8ou***lk1r43LWcVW6fvY1Rr4sEPFodpnA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId', example='1***2'),
  }(name='UserInfo'),
}

model GetHotelContactByGenieDeviceShrinkRequest {
  deviceInfoShrink?: string(name='DeviceInfo'),
  userInfoShrink?: string(name='UserInfo'),
}

model GetHotelContactByGenieDeviceResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C6***E6FA'),
  result?: {
    expireAt?: string(name='ExpireAt', example='1649472283046'),
    gmtCreate?: string(name='GmtCreate', example='2022-07-21 20:02:12'),
    gmtModified?: string(name='GmtModified', example='2022-07-27 14:06:27'),
    hotelId?: string(name='HotelId', example='a7***83'),
    icon?: string(name='Icon', example='xxx.icon'),
    id?: long(name='Id', example='1'),
    name?: string(name='Name'),
    number?: string(name='Number', example='101'),
    status?: int32(name='Status', example='1'),
    type?: string(name='Type', example='group'),
    uuid?: string(name='Uuid', example='2E57***D45F9'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetHotelContactByGenieDeviceResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelContactByGenieDeviceResponseBody(name='body'),
}

/**
 * @summary 获取当前设备的通话信息
 *
 * @param tmpReq GetHotelContactByGenieDeviceRequest
 * @param headers GetHotelContactByGenieDeviceHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelContactByGenieDeviceResponse
 */
async function getHotelContactByGenieDeviceWithOptions(tmpReq: GetHotelContactByGenieDeviceRequest, headers: GetHotelContactByGenieDeviceHeaders, runtime: $RuntimeOptions): GetHotelContactByGenieDeviceResponse {
  tmpReq.validate();
  var request = new GetHotelContactByGenieDeviceShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.deviceInfo)) {
    request.deviceInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.deviceInfo, 'DeviceInfo', 'json');
  }
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.deviceInfoShrink)) {
    query['DeviceInfo'] = request.deviceInfoShrink;
  }
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelContactByGenieDevice',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelContactByGenieDevice`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取当前设备的通话信息
 *
 * @param request GetHotelContactByGenieDeviceRequest
 * @return GetHotelContactByGenieDeviceResponse
 */
async function getHotelContactByGenieDevice(request: GetHotelContactByGenieDeviceRequest): GetHotelContactByGenieDeviceResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelContactByGenieDeviceHeaders{};
  return getHotelContactByGenieDeviceWithOptions(request, headers, runtime);
}

model GetHotelContactByNumberHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelContactByNumberRequest {
  number?: string(name='Number', description='This parameter is required.', example='101'),
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='123'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='HOTEL'),
    id?: string(name='Id', description='This parameter is required.', example='rV/XSgPuxZjx/hN3iw8U+e8ou***lk1r43LWcVW6fvY1Rr4sEPFodpnA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId', example='123'),
  }(name='UserInfo'),
}

model GetHotelContactByNumberShrinkRequest {
  number?: string(name='Number', description='This parameter is required.', example='101'),
  userInfoShrink?: string(name='UserInfo'),
}

model GetHotelContactByNumberResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: {
    expireAt?: string(name='ExpireAt', example='1649316479098'),
    hotelId?: string(name='HotelId', example='a7***83'),
    icon?: string(name='Icon', example='xxx.icon'),
    name?: string(name='Name'),
    number?: string(name='Number', example='101'),
    status?: int32(name='Status', example='1'),
    type?: string(name='Type', example='group'),
    uuid?: string(name='Uuid', example='2E57***D45F9'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetHotelContactByNumberResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelContactByNumberResponseBody(name='body'),
}

/**
 * @summary 根据号码获取酒店联系人
 *
 * @param tmpReq GetHotelContactByNumberRequest
 * @param headers GetHotelContactByNumberHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelContactByNumberResponse
 */
async function getHotelContactByNumberWithOptions(tmpReq: GetHotelContactByNumberRequest, headers: GetHotelContactByNumberHeaders, runtime: $RuntimeOptions): GetHotelContactByNumberResponse {
  tmpReq.validate();
  var request = new GetHotelContactByNumberShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var body : map[string]any = {};
  if (!$isNull(request.number)) {
    body['Number'] = request.number;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelContactByNumber',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelContactByNumber`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 根据号码获取酒店联系人
 *
 * @param request GetHotelContactByNumberRequest
 * @return GetHotelContactByNumberResponse
 */
async function getHotelContactByNumber(request: GetHotelContactByNumberRequest): GetHotelContactByNumberResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelContactByNumberHeaders{};
  return getHotelContactByNumberWithOptions(request, headers, runtime);
}

model GetHotelContactsHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelContactsRequest {
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='123'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='HOTEL'),
    id?: string(name='Id', description='This parameter is required.', example='rV/XSgPuxZjx/hN3iw8U+e8ou***lk1r43LWcVW6fvY1Rr4sEPFodpnA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId', example='123'),
  }(name='UserInfo'),
}

model GetHotelContactsShrinkRequest {
  userInfoShrink?: string(name='UserInfo'),
}

model GetHotelContactsResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: [ 
    {
      expireAt?: string(name='ExpireAt', example='1649472283046'),
      hotelId?: string(name='HotelId', example='cf24***96e7'),
      icon?: string(name='Icon', example='xxx.icon'),
      name?: string(name='Name'),
      number?: string(name='Number', example='101'),
      status?: int32(name='Status', example='1'),
      type?: string(name='Type', example='group'),
      uuid?: string(name='Uuid', example='0862***A809'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetHotelContactsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelContactsResponseBody(name='body'),
}

/**
 * @summary 获取酒店联系人
 *
 * @param tmpReq GetHotelContactsRequest
 * @param headers GetHotelContactsHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelContactsResponse
 */
async function getHotelContactsWithOptions(tmpReq: GetHotelContactsRequest, headers: GetHotelContactsHeaders, runtime: $RuntimeOptions): GetHotelContactsResponse {
  tmpReq.validate();
  var request = new GetHotelContactsShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelContacts',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelContacts`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取酒店联系人
 *
 * @param request GetHotelContactsRequest
 * @return GetHotelContactsResponse
 */
async function getHotelContacts(request: GetHotelContactsRequest): GetHotelContactsResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelContactsHeaders{};
  return getHotelContactsWithOptions(request, headers, runtime);
}

model GetHotelHomeBackImageAndModesHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelHomeBackImageAndModesRequest {
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='1248494721591392955'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='PROJECT_ID'),
    id?: string(name='Id', description='This parameter is required.', example='mFU6VtVU+pgA8lx6rYMo7SPl11t+8b+8ALrn10MIPEdpK/HI9wELAEppYhPI1cYRDa4og8AMjAEBZKbLUwFjFA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId'),
  }(name='UserInfo', description='This parameter is required.'),
}

model GetHotelHomeBackImageAndModesShrinkRequest {
  userInfoShrink?: string(name='UserInfo', description='This parameter is required.'),
}

model GetHotelHomeBackImageAndModesResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='394450FC-9035-1B7C-8829-BC88832473FC'),
  result?: {
    backgroundImage?: string(name='BackgroundImage', example='https://ailabs.alibabausercontent.com/platform/3d4fe6d66ec49d9789635f66627f0339/welcome_audios/976210a6532150f49c2677a8b7dbc105/l6fspbhn.jpg'),
    hotelName?: string(name='HotelName', example='宣雍测试橙蜂酒店'),
    modeList?: [ 
      {
        cnName?: string(name='CnName', example='浪漫模式'),
        code?: string(name='Code', example='romantic'),
        icon?: string(name='Icon', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/changjingmoshi/langman.png'),
      }
    ](name='ModeList'),
  }(name='Result'),
}

model GetHotelHomeBackImageAndModesResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelHomeBackImageAndModesResponseBody(name='body'),
}

/**
 * @summary 获取首页背景图和场景模式
 *
 * @param tmpReq GetHotelHomeBackImageAndModesRequest
 * @param headers GetHotelHomeBackImageAndModesHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelHomeBackImageAndModesResponse
 */
async function getHotelHomeBackImageAndModesWithOptions(tmpReq: GetHotelHomeBackImageAndModesRequest, headers: GetHotelHomeBackImageAndModesHeaders, runtime: $RuntimeOptions): GetHotelHomeBackImageAndModesResponse {
  tmpReq.validate();
  var request = new GetHotelHomeBackImageAndModesShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelHomeBackImageAndModes',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelHomeBackImageAndModes`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取首页背景图和场景模式
 *
 * @param request GetHotelHomeBackImageAndModesRequest
 * @return GetHotelHomeBackImageAndModesResponse
 */
async function getHotelHomeBackImageAndModes(request: GetHotelHomeBackImageAndModesRequest): GetHotelHomeBackImageAndModesResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelHomeBackImageAndModesHeaders{};
  return getHotelHomeBackImageAndModesWithOptions(request, headers, runtime);
}

model GetHotelNoticeHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelNoticeRequest {
  userInfo?: {
    encodeKey?: string(name='EncodeKey', example='12**45'),
    encodeType?: string(name='EncodeType', example='PROJECT_ID'),
    id?: string(name='Id', example='DAFE****ce3ej='),
    idType?: string(name='IdType', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId', example='1'),
  }(name='UserInfo', description='This parameter is required.'),
}

model GetHotelNoticeShrinkRequest {
  userInfoShrink?: string(name='UserInfo', description='This parameter is required.'),
}

model GetHotelNoticeResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', description='RequestId', example='73C67BD9-175A-1324-8202-9FAABBB3E6FA'),
  result?: string(name='Result', example='test notice...'),
}

model GetHotelNoticeResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelNoticeResponseBody(name='body'),
}

/**
 * @summary 获取酒店通知
 *
 * @param tmpReq GetHotelNoticeRequest
 * @param headers GetHotelNoticeHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelNoticeResponse
 */
async function getHotelNoticeWithOptions(tmpReq: GetHotelNoticeRequest, headers: GetHotelNoticeHeaders, runtime: $RuntimeOptions): GetHotelNoticeResponse {
  tmpReq.validate();
  var request = new GetHotelNoticeShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelNotice',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelNotice`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取酒店通知
 *
 * @param request GetHotelNoticeRequest
 * @return GetHotelNoticeResponse
 */
async function getHotelNotice(request: GetHotelNoticeRequest): GetHotelNoticeResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelNoticeHeaders{};
  return getHotelNoticeWithOptions(request, headers, runtime);
}

model GetHotelNoticeV2Headers {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelNoticeV2Request {
  userInfo?: {
    encodeKey?: string(name='EncodeKey', example='123'),
    encodeType?: string(name='EncodeType', example='HOTEL'),
    id?: string(name='Id', example='rV/XSgPuxZjx/hN3iw8U+e8ou***lk1r43LWcVW6fvY1Rr4sEPFodpnA=='),
    idType?: string(name='IdType', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId', example='123'),
  }(name='UserInfo', description='This parameter is required.'),
}

model GetHotelNoticeV2ShrinkRequest {
  userInfoShrink?: string(name='UserInfo', description='This parameter is required.'),
}

model GetHotelNoticeV2ResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0D0C***67DB'),
  result?: {
    content?: string(name='Content'),
    hotelId?: string(name='HotelId', example='a7***83'),
    title?: string(name='Title'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetHotelNoticeV2Response = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelNoticeV2ResponseBody(name='body'),
}

/**
 * @summary 获取酒店通知
 *
 * @param tmpReq GetHotelNoticeV2Request
 * @param headers GetHotelNoticeV2Headers
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelNoticeV2Response
 */
async function getHotelNoticeV2WithOptions(tmpReq: GetHotelNoticeV2Request, headers: GetHotelNoticeV2Headers, runtime: $RuntimeOptions): GetHotelNoticeV2Response {
  tmpReq.validate();
  var request = new GetHotelNoticeV2ShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelNoticeV2',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelNoticeV2`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取酒店通知
 *
 * @param request GetHotelNoticeV2Request
 * @return GetHotelNoticeV2Response
 */
async function getHotelNoticeV2(request: GetHotelNoticeV2Request): GetHotelNoticeV2Response {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelNoticeV2Headers{};
  return getHotelNoticeV2WithOptions(request, headers, runtime);
}

model GetHotelOrderDetailHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelOrderDetailRequest {
  payload?: {
    orderNo?: string(name='OrderNo', description='This parameter is required.', example='20220714150702000168270112410630'),
  }(name='Payload', description='This parameter is required.'),
}

model GetHotelOrderDetailShrinkRequest {
  payloadShrink?: string(name='Payload', description='This parameter is required.'),
}

model GetHotelOrderDetailResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='6F579407-13C4-1708-AFA2-B657BE5FE8F5'),
  result?: [ 
    {
      applyAmt?: long(name='ApplyAmt', example='200'),
      gmtCreate?: long(name='GmtCreate', example='1659952892000'),
      itemUrl?: string(name='ItemUrl', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/jiudianmianban_fuwushangpintu/weixiu/dianqilei/chuanglian.png'),
      name?: string(name='Name', example='窗帘'),
      quantity?: long(name='Quantity', example='1'),
    }
  ](name='Result'),
}

model GetHotelOrderDetailResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelOrderDetailResponseBody(name='body'),
}

/**
 * @summary 获取酒店订单详情
 *
 * @param tmpReq GetHotelOrderDetailRequest
 * @param headers GetHotelOrderDetailHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelOrderDetailResponse
 */
async function getHotelOrderDetailWithOptions(tmpReq: GetHotelOrderDetailRequest, headers: GetHotelOrderDetailHeaders, runtime: $RuntimeOptions): GetHotelOrderDetailResponse {
  tmpReq.validate();
  var request = new GetHotelOrderDetailShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.payload)) {
    request.payloadShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.payload, 'Payload', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.payloadShrink)) {
    query['Payload'] = request.payloadShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelOrderDetail',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelOrderDetail`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取酒店订单详情
 *
 * @param request GetHotelOrderDetailRequest
 * @return GetHotelOrderDetailResponse
 */
async function getHotelOrderDetail(request: GetHotelOrderDetailRequest): GetHotelOrderDetailResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelOrderDetailHeaders{};
  return getHotelOrderDetailWithOptions(request, headers, runtime);
}

model GetHotelRoomDeviceHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelRoomDeviceRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
}

model GetHotelRoomDeviceResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='vrehvuifdsgrts'),
  result?: [ 
    {
      firmwareVersion?: string(name='FirmwareVersion', example='1.0.0-release'),
      hotelId?: string(name='HotelId', example='af7***536'),
      mac?: string(name='Mac', example='aa:aa:aa:aa:aa:aa'),
      onlineStatus?: int32(name='OnlineStatus', example='1'),
      roomNo?: string(name='RoomNo', example='1211'),
      sn?: string(name='Sn', example='dsfdsfrgreg'),
    }
  ](name='Result'),
}

model GetHotelRoomDeviceResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelRoomDeviceResponseBody(name='body'),
}

/**
 * @summary 获取酒店房间猫精设备信息
 *
 * @param request GetHotelRoomDeviceRequest
 * @param headers GetHotelRoomDeviceHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelRoomDeviceResponse
 */
async function getHotelRoomDeviceWithOptions(request: GetHotelRoomDeviceRequest, headers: GetHotelRoomDeviceHeaders, runtime: $RuntimeOptions): GetHotelRoomDeviceResponse {
  request.validate();
  var query : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    query['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNo)) {
    query['RoomNo'] = request.roomNo;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelRoomDevice',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelRoomDevice`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取酒店房间猫精设备信息
 *
 * @param request GetHotelRoomDeviceRequest
 * @return GetHotelRoomDeviceResponse
 */
async function getHotelRoomDevice(request: GetHotelRoomDeviceRequest): GetHotelRoomDeviceResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelRoomDeviceHeaders{};
  return getHotelRoomDeviceWithOptions(request, headers, runtime);
}

model GetHotelSampleUtterancesHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelSampleUtterancesRequest {
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.'),
    encodeType?: string(name='EncodeType', description='This parameter is required.'),
    id?: string(name='Id', description='This parameter is required.'),
    idType?: string(name='IdType', description='This parameter is required.'),
    organizationId?: string(name='OrganizationId'),
  }(name='UserInfo'),
}

model GetHotelSampleUtterancesShrinkRequest {
  userInfoShrink?: string(name='UserInfo'),
}

model GetHotelSampleUtterancesResponseBody = {
  code?: int32(name='Code'),
  message?: string(name='Message'),
  requestId?: string(name='RequestId'),
  result?: [ string ](name='Result'),
}

model GetHotelSampleUtterancesResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelSampleUtterancesResponseBody(name='body'),
}

/**
 * @summary 获取推荐语料
 *
 * @param tmpReq GetHotelSampleUtterancesRequest
 * @param headers GetHotelSampleUtterancesHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelSampleUtterancesResponse
 */
async function getHotelSampleUtterancesWithOptions(tmpReq: GetHotelSampleUtterancesRequest, headers: GetHotelSampleUtterancesHeaders, runtime: $RuntimeOptions): GetHotelSampleUtterancesResponse {
  tmpReq.validate();
  var request = new GetHotelSampleUtterancesShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelSampleUtterances',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelSampleUtterances`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取推荐语料
 *
 * @param request GetHotelSampleUtterancesRequest
 * @return GetHotelSampleUtterancesResponse
 */
async function getHotelSampleUtterances(request: GetHotelSampleUtterancesRequest): GetHotelSampleUtterancesResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelSampleUtterancesHeaders{};
  return getHotelSampleUtterancesWithOptions(request, headers, runtime);
}

model GetHotelSceneItemDetailHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelSceneItemDetailRequest {
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  itemId?: long(name='ItemId', example='10336'),
  name?: string(name='Name'),
}

model GetHotelSceneItemDetailResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: {
    category?: string(name='Category', example='客用品类'),
    dialogueList?: [ 
      {
        createTime?: long(name='CreateTime', example='1666164774'),
        dialogueId?: string(name='DialogueId', example='336'),
        noAnswer?: string(name='NoAnswer'),
        noAnswerTemplate?: string(name='NoAnswerTemplate', example='4'),
        process?: int32(name='Process', example='0'),
        question?: string(name='Question'),
        serviceId?: string(name='ServiceId', example='10336'),
        updateTime?: long(name='UpdateTime', example='1666164774'),
        yesAnswer?: string(name='YesAnswer'),
        yesAnswerTemplate?: string(name='YesAnswerTemplate', example='4'),
      }
    ](name='DialogueList'),
    icon?: string(name='Icon', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/jiudianmianban_fuwushangpintu/wupin/keyongpinlei/zhijin.png'),
    id?: long(name='Id', example='10336'),
    name?: string(name='Name', example='擦鞋布'),
    price?: long(name='Price', example='170'),
    status?: string(name='Status', example='已添加'),
    type?: string(name='Type', example='GOODS'),
    updateTime?: long(name='UpdateTime', example='1666168828'),
  }(name='Result'),
}

model GetHotelSceneItemDetailResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelSceneItemDetailResponseBody(name='body'),
}

/**
 * @summary 酒店场景详情
 *
 * @param request GetHotelSceneItemDetailRequest
 * @param headers GetHotelSceneItemDetailHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelSceneItemDetailResponse
 */
async function getHotelSceneItemDetailWithOptions(request: GetHotelSceneItemDetailRequest, headers: GetHotelSceneItemDetailHeaders, runtime: $RuntimeOptions): GetHotelSceneItemDetailResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.itemId)) {
    body['ItemId'] = request.itemId;
  }
  if (!$isNull(request.name)) {
    body['Name'] = request.name;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelSceneItemDetail',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelSceneItemDetail`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店场景详情
 *
 * @param request GetHotelSceneItemDetailRequest
 * @return GetHotelSceneItemDetailResponse
 */
async function getHotelSceneItemDetail(request: GetHotelSceneItemDetailRequest): GetHotelSceneItemDetailResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelSceneItemDetailHeaders{};
  return getHotelSceneItemDetailWithOptions(request, headers, runtime);
}

model GetHotelScreenSaverHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelScreenSaverRequest {
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='1248494721591392955'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='PROJECT_ID'),
    id?: string(name='Id', description='This parameter is required.', example='mFU6VtVU+pgA8lx6rYMo7SPl11t+8b+8ALrn10MIPEdpK/HI9wELAEppYhPI1cYRDa4og8AMjAEBZKbLUwFjFA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId'),
  }(name='UserInfo', description='This parameter is required.'),
}

model GetHotelScreenSaverShrinkRequest {
  userInfoShrink?: string(name='UserInfo', description='This parameter is required.'),
}

model GetHotelScreenSaverResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='5F0467E1-19F2-1757-B6D0-B79917BA2E81'),
  result?: {
    picUrl?: string(name='PicUrl', example='https://ailabs.alibabausercontent.com/platform/3d4fe6d66ec49d9789635f66627f0339/welcome_audios/976210a6532150f49c2677a8b7dbc105/l6fspbhd.jpg'),
    styleCode?: string(name='StyleCode', example='common-weather'),
  }(name='Result'),
}

model GetHotelScreenSaverResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelScreenSaverResponseBody(name='body'),
}

/**
 * @summary 获取酒店屏保
 *
 * @param tmpReq GetHotelScreenSaverRequest
 * @param headers GetHotelScreenSaverHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelScreenSaverResponse
 */
async function getHotelScreenSaverWithOptions(tmpReq: GetHotelScreenSaverRequest, headers: GetHotelScreenSaverHeaders, runtime: $RuntimeOptions): GetHotelScreenSaverResponse {
  tmpReq.validate();
  var request = new GetHotelScreenSaverShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelScreenSaver',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelScreenSaver`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取酒店屏保
 *
 * @param request GetHotelScreenSaverRequest
 * @return GetHotelScreenSaverResponse
 */
async function getHotelScreenSaver(request: GetHotelScreenSaverRequest): GetHotelScreenSaverResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelScreenSaverHeaders{};
  return getHotelScreenSaverWithOptions(request, headers, runtime);
}

model GetHotelScreenSaverStyleHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelScreenSaverStyleRequest {
  hotelId?: string(name='HotelId', example='af7***536'),
}

model GetHotelScreenSaverStyleResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C67**6FA'),
  result?: [ 
    {
      cnName?: string(name='CnName'),
      code?: string(name='Code', example='common-weather'),
      enName?: string(name='EnName', example='common-weather'),
      picUrl?: string(name='PicUrl', example='https://img.***.png'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetHotelScreenSaverStyleResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelScreenSaverStyleResponseBody(name='body'),
}

/**
 * @summary 获取屏保列表
 *
 * @param request GetHotelScreenSaverStyleRequest
 * @param headers GetHotelScreenSaverStyleHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelScreenSaverStyleResponse
 */
async function getHotelScreenSaverStyleWithOptions(request: GetHotelScreenSaverStyleRequest, headers: GetHotelScreenSaverStyleHeaders, runtime: $RuntimeOptions): GetHotelScreenSaverStyleResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelScreenSaverStyle',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelScreenSaverStyle`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取屏保列表
 *
 * @param request GetHotelScreenSaverStyleRequest
 * @return GetHotelScreenSaverStyleResponse
 */
async function getHotelScreenSaverStyle(request: GetHotelScreenSaverStyleRequest): GetHotelScreenSaverStyleResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelScreenSaverStyleHeaders{};
  return getHotelScreenSaverStyleWithOptions(request, headers, runtime);
}

model GetHotelSettingHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetHotelSettingRequest {
  hotelId?: string(name='HotelId', example='af7***536'),
  settingType?: string(name='SettingType', example='SCREENSAVER'),
}

model GetHotelSettingResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='F7E2****B7C94'),
  result?: {
    deleteToken?: long(name='DeleteToken', example='0'),
    extInfo?: string(name='ExtInfo', example='{}'),
    hotelDeviceModeList?: [ string ](name='HotelDeviceModeList'),
    hotelId?: string(name='HotelId', example='af7***536'),
    hotelScreenSaver?: {
      screenSaverPicUrl?: string(name='ScreenSaverPicUrl', example='https://a***png'),
      screenSaverStyle?: string(name='ScreenSaverStyle', example='common-weather'),
    }(name='HotelScreenSaver'),
    nightMode?: {
      defaultBright?: string(name='DefaultBright', description='夜间模式下的默认亮度'),
      defaultVolume?: string(name='DefaultVolume', description='夜间模式下的默认音量'),
      enable?: boolean(name='Enable', example='true'),
      end?: string(name='End', example='22:00'),
      standbyAction?: string(name='StandbyAction', example='screenoff'),
      start?: string(name='Start', example='07:00'),
    }(name='NightMode'),
    settingType?: string(name='SettingType', example='SCREENSAVER'),
    value?: string(name='Value'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetHotelSettingResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetHotelSettingResponseBody(name='body'),
}

/**
 * @summary 查询定制配置
 *
 * @param request GetHotelSettingRequest
 * @param headers GetHotelSettingHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetHotelSettingResponse
 */
async function getHotelSettingWithOptions(request: GetHotelSettingRequest, headers: GetHotelSettingHeaders, runtime: $RuntimeOptions): GetHotelSettingResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.settingType)) {
    body['SettingType'] = request.settingType;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetHotelSetting',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelSetting`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询定制配置
 *
 * @param request GetHotelSettingRequest
 * @return GetHotelSettingResponse
 */
async function getHotelSetting(request: GetHotelSettingRequest): GetHotelSettingResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetHotelSettingHeaders{};
  return getHotelSettingWithOptions(request, headers, runtime);
}

model GetRelationProductListHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetRelationProductListResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: [ 
    {
      name?: string(name='Name'),
      pk?: string(name='Pk', example='jTOSl***l1odxImRw'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetRelationProductListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetRelationProductListResponseBody(name='body'),
}

/**
 * @summary 关联产品列表查看
 *
 * @param headers GetRelationProductListHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetRelationProductListResponse
 */
async function getRelationProductListWithOptions(headers: GetRelationProductListHeaders, runtime: $RuntimeOptions): GetRelationProductListResponse {
  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
  };
  var params = new OpenApiUtil.Params{
    action = 'GetRelationProductList',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getRelationProductList`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 关联产品列表查看
 *
 * @return GetRelationProductListResponse
 */
async function getRelationProductList(): GetRelationProductListResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetRelationProductListHeaders{};
  return getRelationProductListWithOptions(headers, runtime);
}

model GetUnionIdHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetUnionIdRequest {
  encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='125****0946'),
  encodeType?: string(name='EncodeType', description='This parameter is required.', example='HOTEL'),
  id?: string(name='Id', description='This parameter is required.', example='62a319****abdc'),
  idType?: string(name='IdType', description='This parameter is required.', example='DEVICE_ID'),
}

model GetUnionIdResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: [ 
    {
      organizationId?: string(name='OrganizationId', example='4325***765'),
      unionId?: string(name='UnionId', example='8bh2****8s8'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetUnionIdResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetUnionIdResponseBody(name='body'),
}

/**
 * @summary 获取组织下unionId列表
 *
 * @param request GetUnionIdRequest
 * @param headers GetUnionIdHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetUnionIdResponse
 */
async function getUnionIdWithOptions(request: GetUnionIdRequest, headers: GetUnionIdHeaders, runtime: $RuntimeOptions): GetUnionIdResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.encodeKey)) {
    body['EncodeKey'] = request.encodeKey;
  }
  if (!$isNull(request.encodeType)) {
    body['EncodeType'] = request.encodeType;
  }
  if (!$isNull(request.id)) {
    body['Id'] = request.id;
  }
  if (!$isNull(request.idType)) {
    body['IdType'] = request.idType;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetUnionId',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getUnionId`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取组织下unionId列表
 *
 * @param request GetUnionIdRequest
 * @return GetUnionIdResponse
 */
async function getUnionId(request: GetUnionIdRequest): GetUnionIdResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetUnionIdHeaders{};
  return getUnionIdWithOptions(request, headers, runtime);
}

model GetWelcomeTextAndMusicHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model GetWelcomeTextAndMusicRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a3***013'),
}

model GetWelcomeTextAndMusicResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: {
    hotelId?: string(name='HotelId', example='a7***83'),
    musicUrl?: string(name='MusicUrl', example='http://ailabsaicloudservice.alicdn.com/tmp/a.wav'),
    text?: string(name='Text'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model GetWelcomeTextAndMusicResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: GetWelcomeTextAndMusicResponseBody(name='body'),
}

/**
 * @summary 查询欢迎语信息
 *
 * @param request GetWelcomeTextAndMusicRequest
 * @param headers GetWelcomeTextAndMusicHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return GetWelcomeTextAndMusicResponse
 */
async function getWelcomeTextAndMusicWithOptions(request: GetWelcomeTextAndMusicRequest, headers: GetWelcomeTextAndMusicHeaders, runtime: $RuntimeOptions): GetWelcomeTextAndMusicResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'GetWelcomeTextAndMusic',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getWelcomeTextAndMusic`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询欢迎语信息
 *
 * @param request GetWelcomeTextAndMusicRequest
 * @return GetWelcomeTextAndMusicResponse
 */
async function getWelcomeTextAndMusic(request: GetWelcomeTextAndMusicRequest): GetWelcomeTextAndMusicResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new GetWelcomeTextAndMusicHeaders{};
  return getWelcomeTextAndMusicWithOptions(request, headers, runtime);
}

model HotelQrBindHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model HotelQrBindRequest {
  clientId?: string(name='ClientId', description='This parameter is required.', example='xxxxxx'),
  code?: string(name='Code', description='This parameter is required.', example='freuisghrtiesnvfkdsvbfuidslnvfs'),
  extInfo?: string(name='ExtInfo'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
}

model HotelQrBindResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73****9-175A-1324-8202-9FAAB*****A'),
  result?: {
    openDeviceInfo?: {
      encodeKey?: string(name='EncodeKey', example='123'),
      encodeType?: string(name='EncodeType', example='HOTEL'),
      id?: string(name='Id', example='xxxxxxx'),
      idType?: string(name='IdType', example='OPEN_ID'),
      organizationId?: string(name='OrganizationId', example='aaaaaaaa'),
    }(name='OpenDeviceInfo'),
    openUserInfo?: {
      encodeKey?: string(name='EncodeKey', example='123'),
      encodeType?: string(name='EncodeType', example='HOTEL'),
      id?: string(name='Id', example='xxxxxx'),
      idType?: string(name='IdType', example='OPEN_ID'),
      organizationId?: string(name='OrganizationId', example='aaaaaaaa'),
    }(name='OpenUserInfo'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model HotelQrBindResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: HotelQrBindResponseBody(name='body'),
}

/**
 * @summary 酒店带屏设备扫码绑定
 *
 * @param request HotelQrBindRequest
 * @param headers HotelQrBindHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return HotelQrBindResponse
 */
async function hotelQrBindWithOptions(request: HotelQrBindRequest, headers: HotelQrBindHeaders, runtime: $RuntimeOptions): HotelQrBindResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.clientId)) {
    body['ClientId'] = request.clientId;
  }
  if (!$isNull(request.code)) {
    body['Code'] = request.code;
  }
  if (!$isNull(request.extInfo)) {
    body['ExtInfo'] = request.extInfo;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'HotelQrBind',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/hotelQrBind`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店带屏设备扫码绑定
 *
 * @param request HotelQrBindRequest
 * @return HotelQrBindResponse
 */
async function hotelQrBind(request: HotelQrBindRequest): HotelQrBindResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new HotelQrBindHeaders{};
  return hotelQrBindWithOptions(request, headers, runtime);
}

model ImportHotelConfigHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ImportHotelConfigRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
  importHotelConfig?: {
    rcuCustomScenes?: [ 
      {
        corpusList?: [ string ](name='CorpusList', description='This parameter is required.'),
        description?: string(name='Description'),
        icon?: string(name='Icon'),
        name?: string(name='Name', description='This parameter is required.'),
        sceneId?: string(name='SceneId', description='This parameter is required.'),
      }
    ](name='RcuCustomScenes'),
  }(name='ImportHotelConfig', description='This parameter is required.'),
}

model ImportHotelConfigShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
  importHotelConfigShrink?: string(name='ImportHotelConfig', description='This parameter is required.'),
}

model ImportHotelConfigResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ImportHotelConfigResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ImportHotelConfigResponseBody(name='body'),
}

/**
 * @summary 批量导入酒店配置
 *
 * @param tmpReq ImportHotelConfigRequest
 * @param headers ImportHotelConfigHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ImportHotelConfigResponse
 */
async function importHotelConfigWithOptions(tmpReq: ImportHotelConfigRequest, headers: ImportHotelConfigHeaders, runtime: $RuntimeOptions): ImportHotelConfigResponse {
  tmpReq.validate();
  var request = new ImportHotelConfigShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.importHotelConfig)) {
    request.importHotelConfigShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.importHotelConfig, 'ImportHotelConfig', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.importHotelConfigShrink)) {
    body['ImportHotelConfig'] = request.importHotelConfigShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ImportHotelConfig',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/importHotelConfig`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 批量导入酒店配置
 *
 * @param request ImportHotelConfigRequest
 * @return ImportHotelConfigResponse
 */
async function importHotelConfig(request: ImportHotelConfigRequest): ImportHotelConfigResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ImportHotelConfigHeaders{};
  return importHotelConfigWithOptions(request, headers, runtime);
}

model ImportRoomControlDevicesHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ImportRoomControlDevicesRequest {
  enableInfraredDeviceImport?: string(name='EnableInfraredDeviceImport'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='vdgrefds'),
  locationDevices?: [ 
    {
      devices?: [ 
        {
          aliasList?: [ string ](name='AliasList'),
          brand?: string(name='Brand'),
          city?: string(name='City'),
          connectType?: string(name='ConnectType'),
          deviceName?: string(name='DeviceName', description='This parameter is required.'),
          dn?: string(name='Dn'),
          infraredId?: string(name='InfraredId'),
          infraredIndex?: string(name='InfraredIndex'),
          infraredVersion?: string(name='InfraredVersion'),
          multiKeySwitchExt?: {
            switchList?: [ 
              {
                aliasList?: [ string ](name='AliasList'),
                category?: string(name='Category'),
                deviceIndex?: int32(name='DeviceIndex'),
                deviceName?: string(name='DeviceName'),
                location?: string(name='Location'),
              }
            ](name='SwitchList'),
          }(name='MultiKeySwitchExt'),
          name?: string(name='Name', description='This parameter is required.', example='light'),
          number?: string(name='Number', example='night_light'),
          pk?: string(name='Pk'),
          province?: string(name='Province'),
          serviceProvider?: string(name='ServiceProvider'),
        }
      ](name='Devices'),
      location?: string(name='Location', description='This parameter is required.', example='room'),
      locationName?: string(name='LocationName'),
    }
  ](name='LocationDevices', description='This parameter is required.'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
}

model ImportRoomControlDevicesShrinkRequest {
  enableInfraredDeviceImport?: string(name='EnableInfraredDeviceImport'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='vdgrefds'),
  locationDevicesShrink?: string(name='LocationDevices', description='This parameter is required.'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
}

model ImportRoomControlDevicesResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='fdsfregtre'),
  result?: int32(name='Result', example='10'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ImportRoomControlDevicesResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ImportRoomControlDevicesResponseBody(name='body'),
}

/**
 * @summary 批量导入设备（同时补充房型）
 *
 * @param tmpReq ImportRoomControlDevicesRequest
 * @param headers ImportRoomControlDevicesHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ImportRoomControlDevicesResponse
 */
async function importRoomControlDevicesWithOptions(tmpReq: ImportRoomControlDevicesRequest, headers: ImportRoomControlDevicesHeaders, runtime: $RuntimeOptions): ImportRoomControlDevicesResponse {
  tmpReq.validate();
  var request = new ImportRoomControlDevicesShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.locationDevices)) {
    request.locationDevicesShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.locationDevices, 'LocationDevices', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.enableInfraredDeviceImport)) {
    body['EnableInfraredDeviceImport'] = request.enableInfraredDeviceImport;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.locationDevicesShrink)) {
    body['LocationDevices'] = request.locationDevicesShrink;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ImportRoomControlDevices',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/importRoomControlDevices`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 批量导入设备（同时补充房型）
 *
 * @param request ImportRoomControlDevicesRequest
 * @return ImportRoomControlDevicesResponse
 */
async function importRoomControlDevices(request: ImportRoomControlDevicesRequest): ImportRoomControlDevicesResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ImportRoomControlDevicesHeaders{};
  return importRoomControlDevicesWithOptions(request, headers, runtime);
}

model ImportRoomGenieScenesHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ImportRoomGenieScenesRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a3***013'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
  sceneList?: [ 
    {
      actions?: [ 
        {
          attributeValues?: [ 
            {
              attributeName?: string(name='AttributeName', description='This parameter is required.', example='powerstate'),
              attributeValue?: string(name='AttributeValue', description='This parameter is required.', example='1'),
            }
          ](name='AttributeValues'),
          device?: {
            category?: string(name='Category', description='This parameter is required.', example='light'),
            deviceIndex?: int32(name='DeviceIndex', example='0'),
            deviceNumber?: string(name='DeviceNumber', description='This parameter is required.', example='3c5d2ab8f9ec'),
            type?: int32(name='Type', example='1'),
          }(name='Device'),
          reply?: string(name='Reply'),
          type?: int32(name='Type'),
        }
      ](name='Actions', description='This parameter is required.'),
      description?: string(name='Description'),
      display?: boolean(name='Display', description='This parameter is required.', example='true'),
      icon?: string(name='Icon', example='http://xxx.com/yyy.png'),
      sceneName?: string(name='SceneName', description='This parameter is required.'),
      triggerLogical?: int32(name='TriggerLogical', description='This parameter is required.', example='1'),
      triggers?: [ 
        {
          attributeValues?: [ 
            {
              attributeName?: string(name='AttributeName', description='This parameter is required.'),
              attributeValue?: string(name='AttributeValue', description='This parameter is required.'),
            }
          ](name='AttributeValues'),
          corpusList?: [ string ](name='CorpusList'),
          device?: {
            category?: string(name='Category', description='This parameter is required.'),
            deviceIndex?: string(name='DeviceIndex'),
            deviceNumber?: string(name='DeviceNumber', description='This parameter is required.'),
          }(name='Device'),
          type?: int32(name='Type', description='This parameter is required.', example='1'),
        }
      ](name='Triggers', description='This parameter is required.'),
    }
  ](name='SceneList'),
}

model ImportRoomGenieScenesShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a3***013'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
  sceneListShrink?: string(name='SceneList'),
}

model ImportRoomGenieScenesResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C6***E6FA'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ImportRoomGenieScenesResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ImportRoomGenieScenesResponseBody(name='body'),
}

/**
 * @summary 导入房间内精灵场景
 *
 * @param tmpReq ImportRoomGenieScenesRequest
 * @param headers ImportRoomGenieScenesHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ImportRoomGenieScenesResponse
 */
async function importRoomGenieScenesWithOptions(tmpReq: ImportRoomGenieScenesRequest, headers: ImportRoomGenieScenesHeaders, runtime: $RuntimeOptions): ImportRoomGenieScenesResponse {
  tmpReq.validate();
  var request = new ImportRoomGenieScenesShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.sceneList)) {
    request.sceneListShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.sceneList, 'SceneList', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }
  if (!$isNull(request.sceneListShrink)) {
    body['SceneList'] = request.sceneListShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ImportRoomGenieScenes',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/importRoomGenieScenes`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 导入房间内精灵场景
 *
 * @param request ImportRoomGenieScenesRequest
 * @return ImportRoomGenieScenesResponse
 */
async function importRoomGenieScenes(request: ImportRoomGenieScenesRequest): ImportRoomGenieScenesResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ImportRoomGenieScenesHeaders{};
  return importRoomGenieScenesWithOptions(request, headers, runtime);
}

model InsertHotelSceneBookItemHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model InsertHotelSceneBookItemRequest {
  addHotelSceneItemReq?: {
    icon?: string(name='Icon', description='icon

This parameter is required.', example='https://ailabs.alibabausercontent.com/platform/28d7a91e3c05db3855725fc39e0387e7/welcome_audios/aa918294b6ca3aa115c51135bf9b80cb/l9f996sq.png'),
    name?: string(name='Name', description='This parameter is required.', example='青椒肉丝'),
    price?: long(name='Price', description='This parameter is required.', example='1250'),
    type?: string(name='Type', description='This parameter is required.', example='FOOD'),
  }(name='AddHotelSceneItemReq', description='addHotelSceneItemReq

This parameter is required.'),
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
}

model InsertHotelSceneBookItemShrinkRequest {
  addHotelSceneItemReqShrink?: string(name='AddHotelSceneItemReq', description='addHotelSceneItemReq

This parameter is required.'),
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
}

model InsertHotelSceneBookItemResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', description='RequestId', example='36FB***80C2'),
  result?: boolean(name='Result', example='true'),
}

model InsertHotelSceneBookItemResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: InsertHotelSceneBookItemResponseBody(name='body'),
}

/**
 * @summary 酒店场景预订新增
 *
 * @param tmpReq InsertHotelSceneBookItemRequest
 * @param headers InsertHotelSceneBookItemHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return InsertHotelSceneBookItemResponse
 */
async function insertHotelSceneBookItemWithOptions(tmpReq: InsertHotelSceneBookItemRequest, headers: InsertHotelSceneBookItemHeaders, runtime: $RuntimeOptions): InsertHotelSceneBookItemResponse {
  tmpReq.validate();
  var request = new InsertHotelSceneBookItemShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.addHotelSceneItemReq)) {
    request.addHotelSceneItemReqShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.addHotelSceneItemReq, 'AddHotelSceneItemReq', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.addHotelSceneItemReqShrink)) {
    query['AddHotelSceneItemReq'] = request.addHotelSceneItemReqShrink;
  }

  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'InsertHotelSceneBookItem',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/insertHotelSceneBookItem`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店场景预订新增
 *
 * @param request InsertHotelSceneBookItemRequest
 * @return InsertHotelSceneBookItemResponse
 */
async function insertHotelSceneBookItem(request: InsertHotelSceneBookItemRequest): InsertHotelSceneBookItemResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new InsertHotelSceneBookItemHeaders{};
  return insertHotelSceneBookItemWithOptions(request, headers, runtime);
}

model InvokeRobotPushHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model InvokeRobotPushRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  pushType?: string(name='PushType', description='This parameter is required.', example='GET'),
  roomName?: string(name='RoomName'),
  roomNo?: string(name='RoomNo', example='1211'),
}

model InvokeRobotPushResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C6***E6FA'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model InvokeRobotPushResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: InvokeRobotPushResponseBody(name='body'),
}

/**
 * @summary 机器人服务，消息推送
 *
 * @param request InvokeRobotPushRequest
 * @param headers InvokeRobotPushHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return InvokeRobotPushResponse
 */
async function invokeRobotPushWithOptions(request: InvokeRobotPushRequest, headers: InvokeRobotPushHeaders, runtime: $RuntimeOptions): InvokeRobotPushResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.pushType)) {
    body['PushType'] = request.pushType;
  }
  if (!$isNull(request.roomName)) {
    body['RoomName'] = request.roomName;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'InvokeRobotPush',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/invokeRobotPush`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 机器人服务，消息推送
 *
 * @param request InvokeRobotPushRequest
 * @return InvokeRobotPushResponse
 */
async function invokeRobotPush(request: InvokeRobotPushRequest): InvokeRobotPushResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new InvokeRobotPushHeaders{};
  return invokeRobotPushWithOptions(request, headers, runtime);
}

model ListAllProvincesHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListAllProvincesResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='00534880-4397-5134-B212-1030B7A37C27'),
  result?: [ string ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ListAllProvincesResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListAllProvincesResponseBody(name='body'),
}

/**
 * @summary 查询省份
 *
 * @param headers ListAllProvincesHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListAllProvincesResponse
 */
async function listAllProvincesWithOptions(headers: ListAllProvincesHeaders, runtime: $RuntimeOptions): ListAllProvincesResponse {
  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
  };
  var params = new OpenApiUtil.Params{
    action = 'ListAllProvinces',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listAllProvinces`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询省份
 *
 * @return ListAllProvincesResponse
 */
async function listAllProvinces(): ListAllProvincesResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListAllProvincesHeaders{};
  return listAllProvincesWithOptions(headers, runtime);
}

model ListCitiesByProvinceHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListCitiesByProvinceRequest {
  province?: string(name='Province', description='This parameter is required.'),
}

model ListCitiesByProvinceResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='860194F7-9593-50EA-8E53-BCEC0D325A00'),
  result?: [ string ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ListCitiesByProvinceResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListCitiesByProvinceResponseBody(name='body'),
}

/**
 * @summary 查询城市
 *
 * @param request ListCitiesByProvinceRequest
 * @param headers ListCitiesByProvinceHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListCitiesByProvinceResponse
 */
async function listCitiesByProvinceWithOptions(request: ListCitiesByProvinceRequest, headers: ListCitiesByProvinceHeaders, runtime: $RuntimeOptions): ListCitiesByProvinceResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.province)) {
    body['Province'] = request.province;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListCitiesByProvince',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listCitiesByProvince`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询城市
 *
 * @param request ListCitiesByProvinceRequest
 * @return ListCitiesByProvinceResponse
 */
async function listCitiesByProvince(request: ListCitiesByProvinceRequest): ListCitiesByProvinceResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListCitiesByProvinceHeaders{};
  return listCitiesByProvinceWithOptions(request, headers, runtime);
}

model ListCustomQAHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListCustomQARequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0c0***5eb'),
  keyword?: string(name='Keyword', example='***'),
  page?: {
    pageNumber?: int32(name='PageNumber', description='This parameter is required.', example='1'),
    pageSize?: int32(name='PageSize', description='This parameter is required.', example='10'),
  }(name='Page', description='This parameter is required.'),
}

model ListCustomQAShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0c0***5eb'),
  keyword?: string(name='Keyword', example='***'),
  pageShrink?: string(name='Page', description='This parameter is required.'),
}

model ListCustomQAResponseBody = {
  message?: string(name='Message', example='success'),
  page?: {
    pageNumber?: int32(name='PageNumber', example='1'),
    pageSize?: int32(name='PageSize', example='10'),
    total?: int32(name='Total', example='21'),
  }(name='Page'),
  requestId?: string(name='RequestId', example='0EC7***726E'),
  result?: [ 
    {
      answers?: string(name='Answers', example='22;11'),
      createTime?: string(name='CreateTime', example='2023-01-10 10:01:59'),
      customQAId?: string(name='CustomQAId', example='111'),
      hotelId?: string(name='HotelId', example='a7***83'),
      keyWords?: string(name='KeyWords', example='22;11'),
      majorQuestion?: string(name='MajorQuestion', example='***'),
      status?: int32(name='Status', example='0'),
      supplementaryQuestion?: string(name='SupplementaryQuestion', example='22;11'),
      updateTime?: string(name='UpdateTime', example='2023-01-10 10:01:59'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ListCustomQAResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListCustomQAResponseBody(name='body'),
}

/**
 * @summary 查询自定义问答列表
 *
 * @param tmpReq ListCustomQARequest
 * @param headers ListCustomQAHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListCustomQAResponse
 */
async function listCustomQAWithOptions(tmpReq: ListCustomQARequest, headers: ListCustomQAHeaders, runtime: $RuntimeOptions): ListCustomQAResponse {
  tmpReq.validate();
  var request = new ListCustomQAShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.page)) {
    request.pageShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.page, 'Page', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.keyword)) {
    body['Keyword'] = request.keyword;
  }
  if (!$isNull(request.pageShrink)) {
    body['Page'] = request.pageShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListCustomQA',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listCustomQA`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询自定义问答列表
 *
 * @param request ListCustomQARequest
 * @return ListCustomQAResponse
 */
async function listCustomQA(request: ListCustomQARequest): ListCustomQAResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListCustomQAHeaders{};
  return listCustomQAWithOptions(request, headers, runtime);
}

model ListDialogueTemplateHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListDialogueTemplateRequest {
  hotelId?: string(name='HotelId', description='hotelId

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
}

model ListDialogueTemplateResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', description='RequestId', example='0EC7*726E'),
  result?: [ 
    {
      templateDetail?: {
        firstDialogueTemplate?: {
          nonzeroPriceYesAnswer?: string(name='NonzeroPriceYesAnswer', example='${goodsName}${price}元，请问需要服务员送来吗？'),
          zeroPriceNoAnswer?: string(name='ZeroPriceNoAnswer', example='对不起，暂时不提供此物品。'),
          zeroPriceYesAnswer?: string(name='ZeroPriceYesAnswer', example='好的，服务员会尽快送来。'),
        }(name='FirstDialogueTemplate'),
        secondDialogueTemplate?: {
          nonzeroPriceNoAnswer?: string(name='NonzeroPriceNoAnswer', example='好的，已取消。'),
          nonzeroPriceYesAnswer?: string(name='NonzeroPriceYesAnswer', example='好的，服务员会尽快送来${goodsName}'),
        }(name='SecondDialogueTemplate'),
      }(name='TemplateDetail'),
      templateId?: long(name='TemplateId', example='4'),
      templateName?: string(name='TemplateName', example='物品多轮模板'),
      type?: string(name='Type', example='GOODS'),
    }
  ](name='Result'),
}

model ListDialogueTemplateResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListDialogueTemplateResponseBody(name='body'),
}

/**
 * @summary 酒店场景对话模板
 *
 * @param request ListDialogueTemplateRequest
 * @param headers ListDialogueTemplateHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListDialogueTemplateResponse
 */
async function listDialogueTemplateWithOptions(request: ListDialogueTemplateRequest, headers: ListDialogueTemplateHeaders, runtime: $RuntimeOptions): ListDialogueTemplateResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListDialogueTemplate',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listDialogueTemplate`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店场景对话模板
 *
 * @param request ListDialogueTemplateRequest
 * @return ListDialogueTemplateResponse
 */
async function listDialogueTemplate(request: ListDialogueTemplateRequest): ListDialogueTemplateResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListDialogueTemplateHeaders{};
  return listDialogueTemplateWithOptions(request, headers, runtime);
}

model ListHotelAlarmHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelAlarmRequest {
  hotelId?: string(name='HotelId', example='a7a3***013'),
  rooms?: [ string ](name='Rooms'),
}

model ListHotelAlarmShrinkRequest {
  hotelId?: string(name='HotelId', example='a7a3***013'),
  roomsShrink?: string(name='Rooms'),
}

model ListHotelAlarmResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message'),
  requestId?: string(name='RequestId', example='43***881'),
  result?: [ 
    {
      alarmId?: long(name='AlarmId', example='5039'),
      deviceOpenId?: string(name='DeviceOpenId', example='PvkB****VVTA=='),
      scheduleInfo?: {
        once?: {
          day?: int32(name='Day', example='20'),
          hour?: int32(name='Hour', example='10'),
          minute?: int32(name='Minute', example='30'),
          month?: int32(name='Month', example='9'),
          year?: int32(name='Year', example='2022'),
        }(name='Once'),
        type?: string(name='Type', description='ONCE, WEEKLY', example='ONCE'),
        weekly?: {
          daysOfWeek?: [ int32 ](name='DaysOfWeek'),
          hour?: int32(name='Hour', example='10'),
          minute?: int32(name='Minute', example='0'),
        }(name='Weekly'),
      }(name='ScheduleInfo'),
      userOpenId?: string(name='UserOpenId', example='mgw/k***HQd'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ListHotelAlarmResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelAlarmResponseBody(name='body'),
}

/**
 * @summary 查询酒店闹钟
 *
 * @param tmpReq ListHotelAlarmRequest
 * @param headers ListHotelAlarmHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelAlarmResponse
 */
async function listHotelAlarmWithOptions(tmpReq: ListHotelAlarmRequest, headers: ListHotelAlarmHeaders, runtime: $RuntimeOptions): ListHotelAlarmResponse {
  tmpReq.validate();
  var request = new ListHotelAlarmShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.rooms)) {
    request.roomsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.rooms, 'Rooms', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomsShrink)) {
    body['Rooms'] = request.roomsShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotelAlarm',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/getHotelAlarmList`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询酒店闹钟
 *
 * @param request ListHotelAlarmRequest
 * @return ListHotelAlarmResponse
 */
async function listHotelAlarm(request: ListHotelAlarmRequest): ListHotelAlarmResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelAlarmHeaders{};
  return listHotelAlarmWithOptions(request, headers, runtime);
}

model ListHotelControlDeviceHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelControlDeviceRequest {
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.'),
    encodeType?: string(name='EncodeType', description='This parameter is required.'),
    id?: string(name='Id', description='This parameter is required.'),
    idType?: string(name='IdType', description='This parameter is required.'),
    organizationId?: string(name='OrganizationId'),
  }(name='UserInfo'),
}

model ListHotelControlDeviceShrinkRequest {
  userInfoShrink?: string(name='UserInfo'),
}

model ListHotelControlDeviceResponseBody = {
  code?: int32(name='Code'),
  message?: string(name='Message'),
  requestId?: string(name='RequestId'),
  result?: [ map[string]string ](name='Result'),
}

model ListHotelControlDeviceResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelControlDeviceResponseBody(name='body'),
}

/**
 * @summary 酒店设备列表
 *
 * @param tmpReq ListHotelControlDeviceRequest
 * @param headers ListHotelControlDeviceHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelControlDeviceResponse
 */
async function listHotelControlDeviceWithOptions(tmpReq: ListHotelControlDeviceRequest, headers: ListHotelControlDeviceHeaders, runtime: $RuntimeOptions): ListHotelControlDeviceResponse {
  tmpReq.validate();
  var request = new ListHotelControlDeviceShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotelControlDevice',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listHotelControlDevice`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店设备列表
 *
 * @param request ListHotelControlDeviceRequest
 * @return ListHotelControlDeviceResponse
 */
async function listHotelControlDevice(request: ListHotelControlDeviceRequest): ListHotelControlDeviceResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelControlDeviceHeaders{};
  return listHotelControlDeviceWithOptions(request, headers, runtime);
}

model ListHotelInfoHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelInfoResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message'),
  requestId?: string(name='RequestId'),
  result?: [ 
    {
      authAccount?: [ 
        {
          userName?: string(name='UserName', example='leetest'),
        }
      ](name='AuthAccount'),
      hotelAddress?: string(name='HotelAddress'),
      hotelId?: string(name='HotelId', example='cf2446fc9d144c85aaee4f9ae20a96e7'),
      hotelName?: string(name='HotelName'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ListHotelInfoResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelInfoResponseBody(name='body'),
}

/**
 * @summary 获取酒店列表
 *
 * @param headers ListHotelInfoHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelInfoResponse
 */
async function listHotelInfoWithOptions(headers: ListHotelInfoHeaders, runtime: $RuntimeOptions): ListHotelInfoResponse {
  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotelInfo',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listHotelInfo`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取酒店列表
 *
 * @return ListHotelInfoResponse
 */
async function listHotelInfo(): ListHotelInfoResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelInfoHeaders{};
  return listHotelInfoWithOptions(headers, runtime);
}

model ListHotelMessageTemplateHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelMessageTemplateResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId'),
  result?: [ 
    {
      auditMark?: string(name='AuditMark', example='不通过'),
      auditStatus?: string(name='AuditStatus', example='COMMIT'),
      templateDetail?: string(name='TemplateDetail', example='这是${hotel}的一个测试模板'),
      templateId?: long(name='TemplateId', example='1'),
      templateName?: string(name='TemplateName', example='测试模板'),
    }
  ](name='Result'),
}

model ListHotelMessageTemplateResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelMessageTemplateResponseBody(name='body'),
}

/**
 * @summary 获取消息模板
 *
 * @param headers ListHotelMessageTemplateHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelMessageTemplateResponse
 */
async function listHotelMessageTemplateWithOptions(headers: ListHotelMessageTemplateHeaders, runtime: $RuntimeOptions): ListHotelMessageTemplateResponse {
  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotelMessageTemplate',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listHotelMessageTemplate`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取消息模板
 *
 * @return ListHotelMessageTemplateResponse
 */
async function listHotelMessageTemplate(): ListHotelMessageTemplateResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelMessageTemplateHeaders{};
  return listHotelMessageTemplateWithOptions(headers, runtime);
}

model ListHotelOrderHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelOrderRequest {
  payload?: {
    page?: {
      pageNumber?: long(name='PageNumber', description='This parameter is required.', example='1'),
      pageSize?: long(name='PageSize', description='This parameter is required.', example='10'),
    }(name='Page', description='This parameter is required.'),
  }(name='Payload', description='This parameter is required.'),
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='1248494721591392955'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='PROJECT_ID'),
    id?: string(name='Id', description='This parameter is required.', example='mFU6VtVU+pgA8lx6rYMo7SPl11t+8b+8ALrn10MIPEdpK/HI9wELAEppYhPI1cYRDa4og8AMjAEBZKbLUwFjFA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId'),
  }(name='UserInfo', description='This parameter is required.'),
}

model ListHotelOrderShrinkRequest {
  payloadShrink?: string(name='Payload', description='This parameter is required.'),
  userInfoShrink?: string(name='UserInfo', description='This parameter is required.'),
}

model ListHotelOrderResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  page?: {
    hasNext?: boolean(name='HasNext'),
    pageNumber?: int32(name='PageNumber', example='1'),
    pageSize?: int32(name='PageSize', example='10'),
    total?: int32(name='Total', example='21'),
    totalPage?: int32(name='TotalPage', example='7'),
  }(name='Page'),
  requestId?: string(name='RequestId', example='07F61FDA-606F-10A0-8ED0-C6CE62710A48'),
  result?: [ 
    {
      applyAmt?: long(name='ApplyAmt', example='21.5'),
      gmtCreate?: long(name='GmtCreate', example='1659952892000'),
      orderNo?: string(name='OrderNo', example='20220808180132000114508555527711'),
      quantity?: long(name='Quantity', example='12'),
      roomNo?: string(name='RoomNo', example='2001'),
      status?: string(name='Status', example='INIT'),
      type?: string(name='Type', example='REPAIR'),
      typeIconUrl?: string(name='TypeIconUrl', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/changjingfenlei/shebeiweixiu.png'),
      typeName?: string(name='TypeName', example='设备维修'),
    }
  ](name='Result'),
}

model ListHotelOrderResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelOrderResponseBody(name='body'),
}

/**
 * @summary 酒店订单列表
 *
 * @param tmpReq ListHotelOrderRequest
 * @param headers ListHotelOrderHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelOrderResponse
 */
async function listHotelOrderWithOptions(tmpReq: ListHotelOrderRequest, headers: ListHotelOrderHeaders, runtime: $RuntimeOptions): ListHotelOrderResponse {
  tmpReq.validate();
  var request = new ListHotelOrderShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.payload)) {
    request.payloadShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.payload, 'Payload', 'json');
  }
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.payloadShrink)) {
    query['Payload'] = request.payloadShrink;
  }
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotelOrder',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listHotelOrder`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店订单列表
 *
 * @param request ListHotelOrderRequest
 * @return ListHotelOrderResponse
 */
async function listHotelOrder(request: ListHotelOrderRequest): ListHotelOrderResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelOrderHeaders{};
  return listHotelOrderWithOptions(request, headers, runtime);
}

model ListHotelRoomsHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelRoomsRequest {
  hotelAdminRoom?: {
    roomNo?: string(name='RoomNo'),
  }(name='HotelAdminRoom', nullable=true),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='e6dd44fd16084db8a60d69fd625d9f0f'),
}

model ListHotelRoomsShrinkRequest {
  hotelAdminRoomShrink?: string(name='HotelAdminRoom', nullable=true),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='e6dd44fd16084db8a60d69fd625d9f0f'),
}

model ListHotelRoomsResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId'),
  result?: [ 
    {
      hotelId?: string(name='HotelId', example='e6dd44fd16084db8a60d69fd625d9f0f'),
      roomNo?: string(name='RoomNo', example='102'),
    }
  ](name='Result'),
}

model ListHotelRoomsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelRoomsResponseBody(name='body'),
}

/**
 * @summary 获取酒店的所有房间
 *
 * @param tmpReq ListHotelRoomsRequest
 * @param headers ListHotelRoomsHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelRoomsResponse
 */
async function listHotelRoomsWithOptions(tmpReq: ListHotelRoomsRequest, headers: ListHotelRoomsHeaders, runtime: $RuntimeOptions): ListHotelRoomsResponse {
  tmpReq.validate();
  var request = new ListHotelRoomsShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.hotelAdminRoom)) {
    request.hotelAdminRoomShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.hotelAdminRoom, 'HotelAdminRoom', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelAdminRoomShrink)) {
    body['HotelAdminRoom'] = request.hotelAdminRoomShrink;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotelRooms',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listHotelRooms`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 获取酒店的所有房间
 *
 * @param request ListHotelRoomsRequest
 * @return ListHotelRoomsResponse
 */
async function listHotelRooms(request: ListHotelRoomsRequest): ListHotelRoomsResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelRoomsHeaders{};
  return listHotelRoomsWithOptions(request, headers, runtime);
}

model ListHotelSceneBookItemsHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelSceneBookItemsRequest {
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  page?: {
    pageNumber?: int32(name='PageNumber', description='This parameter is required.', example='1'),
    pageSize?: int32(name='PageSize', description='This parameter is required.', example='10'),
  }(name='Page', description='This parameter is required.'),
  type?: string(name='Type', description='This parameter is required.', example='FOOD'),
}

model ListHotelSceneBookItemsShrinkRequest {
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  pageShrink?: string(name='Page', description='This parameter is required.'),
  type?: string(name='Type', description='This parameter is required.', example='FOOD'),
}

model ListHotelSceneBookItemsResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: {
    page?: {
      hasNext?: boolean(name='HasNext', example='True'),
      pageNumber?: int32(name='PageNumber', example='1'),
      pageSize?: int32(name='PageSize', example='10'),
      total?: int32(name='Total', example='23'),
      totalPage?: int32(name='TotalPage', example='3'),
    }(name='Page'),
    sceneItemList?: [ 
      {
        icon?: string(name='Icon', example='https://ailabs.alibabausercontent.com/platform/28d7a91e3c05db3855725fc39e0387e7/welcome_audios/aa918294b6ca3aa115c51135bf9b80cb/l9f996sq.png'),
        id?: long(name='Id', example='11824'),
        name?: string(name='Name', example='青椒肉丝'),
        price?: long(name='Price', example='1850'),
        status?: string(name='Status', example='已添加'),
        type?: string(name='Type', example='FOOD'),
        updateTime?: long(name='UpdateTime', example='1666161803'),
      }
    ](name='SceneItemList'),
  }(name='Result'),
}

model ListHotelSceneBookItemsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelSceneBookItemsResponseBody(name='body'),
}

/**
 * @summary 酒店场景预订列表（餐饮/SPA休闲/打车）
 *
 * @param tmpReq ListHotelSceneBookItemsRequest
 * @param headers ListHotelSceneBookItemsHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelSceneBookItemsResponse
 */
async function listHotelSceneBookItemsWithOptions(tmpReq: ListHotelSceneBookItemsRequest, headers: ListHotelSceneBookItemsHeaders, runtime: $RuntimeOptions): ListHotelSceneBookItemsResponse {
  tmpReq.validate();
  var request = new ListHotelSceneBookItemsShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.page)) {
    request.pageShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.page, 'Page', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.pageShrink)) {
    query['Page'] = request.pageShrink;
  }

  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.type)) {
    body['Type'] = request.type;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotelSceneBookItems',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listHotelSceneBookItems`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店场景预订列表（餐饮/SPA休闲/打车）
 *
 * @param request ListHotelSceneBookItemsRequest
 * @return ListHotelSceneBookItemsResponse
 */
async function listHotelSceneBookItems(request: ListHotelSceneBookItemsRequest): ListHotelSceneBookItemsResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelSceneBookItemsHeaders{};
  return listHotelSceneBookItemsWithOptions(request, headers, runtime);
}

model ListHotelSceneItemHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelSceneItemRequest {
  payload?: {
    type?: string(name='Type', description='This parameter is required.', example='GOODS'),
  }(name='Payload', description='This parameter is required.'),
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='1248494721591392955'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='PROJECT_ID'),
    id?: string(name='Id', description='This parameter is required.', example='mFU6VtVU+pgA8lx6rYMo7SPl11t+8b+8ALrn10MIPEdpK/HI9wELAEppYhPI1cYRDa4og8AMjAEBZKbLUwFjFA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId'),
  }(name='UserInfo', description='This parameter is required.'),
}

model ListHotelSceneItemShrinkRequest {
  payloadShrink?: string(name='Payload', description='This parameter is required.'),
  userInfoShrink?: string(name='UserInfo', description='This parameter is required.'),
}

model ListHotelSceneItemResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  page?: {
    hasNext?: boolean(name='HasNext'),
    pageNumber?: int32(name='PageNumber', example='1'),
    pageSize?: int32(name='PageSize', example='10'),
    total?: int32(name='Total', example='12'),
    totalPage?: int32(name='TotalPage', example='6'),
  }(name='Page'),
  requestId?: string(name='RequestId', example='CEADB586-51CB-1B6B-95BD-AB85A7A08E97'),
  result?: {
    secondCategoryList?: [ 
      {
        itemList?: [ 
          {
            category?: string(name='Category', example='客用品类'),
            icon?: string(name='Icon', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/jiudianmianban_fuwushangpintu/wupin/keyongpinlei/mianqian.png'),
            id?: string(name='Id', example='152860'),
            name?: string(name='Name', example='棉签'),
            price?: long(name='Price', example='1'),
            residueLimit?: long(name='ResidueLimit'),
            status?: string(name='Status', example='已添加'),
            type?: string(name='Type', example='GOODS'),
          }
        ](name='ItemList'),
        secondCategoryName?: string(name='SecondCategoryName', example='客用品类'),
      }
    ](name='SecondCategoryList'),
  }(name='Result'),
}

model ListHotelSceneItemResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelSceneItemResponseBody(name='body'),
}

/**
 * @summary 服务项目
 *
 * @param tmpReq ListHotelSceneItemRequest
 * @param headers ListHotelSceneItemHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelSceneItemResponse
 */
async function listHotelSceneItemWithOptions(tmpReq: ListHotelSceneItemRequest, headers: ListHotelSceneItemHeaders, runtime: $RuntimeOptions): ListHotelSceneItemResponse {
  tmpReq.validate();
  var request = new ListHotelSceneItemShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.payload)) {
    request.payloadShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.payload, 'Payload', 'json');
  }
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.payloadShrink)) {
    query['Payload'] = request.payloadShrink;
  }
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotelSceneItem',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listHotelSceneItem`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 服务项目
 *
 * @param request ListHotelSceneItemRequest
 * @return ListHotelSceneItemResponse
 */
async function listHotelSceneItem(request: ListHotelSceneItemRequest): ListHotelSceneItemResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelSceneItemHeaders{};
  return listHotelSceneItemWithOptions(request, headers, runtime);
}

model ListHotelSceneItemsHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelSceneItemsRequest {
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  listHotelSceneReq?: {
    category?: string(name='Category', example='客用品类'),
    keywords?: string(name='Keywords', example='棉签'),
    page?: {
      pageNumber?: int32(name='PageNumber', example='1'),
      pageSize?: int32(name='PageSize', example='10'),
    }(name='Page', description='This parameter is required.'),
    status?: string(name='Status', example='已添加'),
    type?: string(name='Type', description='This parameter is required.', example='GOODS'),
  }(name='ListHotelSceneReq', description='ListHotelSceneReq

This parameter is required.'),
}

model ListHotelSceneItemsShrinkRequest {
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  listHotelSceneReqShrink?: string(name='ListHotelSceneReq', description='ListHotelSceneReq

This parameter is required.'),
}

model ListHotelSceneItemsResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: {
    page?: {
      hasNext?: boolean(name='HasNext', example='False'),
      pageNumber?: int32(name='PageNumber', example='1'),
      pageSize?: int32(name='PageSize', example='10'),
      total?: int32(name='Total', example='23'),
      totalPage?: int32(name='TotalPage', example='3'),
    }(name='Page'),
    sceneItemList?: [ 
      {
        beyondLimitReply?: string(name='BeyondLimitReply'),
        category?: string(name='Category', example='客用品类'),
        deliveryMethod?: string(name='DeliveryMethod'),
        icon?: string(name='Icon', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/jiudianmianban_fuwushangpintu/wupin/keyongpinlei/mianqian.png'),
        id?: long(name='Id', description='id', example='10336'),
        limitNumber?: int32(name='LimitNumber'),
        limitSwitch?: int32(name='LimitSwitch'),
        name?: string(name='Name', example='棉签'),
        paymentMethod?: string(name='PaymentMethod'),
        price?: long(name='Price', example='160'),
        robotName?: string(name='RobotName'),
        status?: string(name='Status', example='已添加'),
        type?: string(name='Type', example='GOODS'),
        updateTime?: long(name='UpdateTime', example='1666163226'),
      }
    ](name='SceneItemList'),
  }(name='Result'),
}

model ListHotelSceneItemsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelSceneItemsResponseBody(name='body'),
}

/**
 * @summary 酒店场景列表（物品/服务/维修）
 *
 * @param tmpReq ListHotelSceneItemsRequest
 * @param headers ListHotelSceneItemsHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelSceneItemsResponse
 */
async function listHotelSceneItemsWithOptions(tmpReq: ListHotelSceneItemsRequest, headers: ListHotelSceneItemsHeaders, runtime: $RuntimeOptions): ListHotelSceneItemsResponse {
  tmpReq.validate();
  var request = new ListHotelSceneItemsShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.listHotelSceneReq)) {
    request.listHotelSceneReqShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.listHotelSceneReq, 'ListHotelSceneReq', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.listHotelSceneReqShrink)) {
    query['ListHotelSceneReq'] = request.listHotelSceneReqShrink;
  }

  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotelSceneItems',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listHotelSceneItems`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店场景列表（物品/服务/维修）
 *
 * @param request ListHotelSceneItemsRequest
 * @return ListHotelSceneItemsResponse
 */
async function listHotelSceneItems(request: ListHotelSceneItemsRequest): ListHotelSceneItemsResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelSceneItemsHeaders{};
  return listHotelSceneItemsWithOptions(request, headers, runtime);
}

model ListHotelServiceCategoryHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelServiceCategoryRequest {
  payload?: {
    type?: string(name='Type', description='This parameter is required.', example='HOTEL_SERVICE'),
  }(name='Payload', description='This parameter is required.'),
}

model ListHotelServiceCategoryShrinkRequest {
  payloadShrink?: string(name='Payload', description='This parameter is required.'),
}

model ListHotelServiceCategoryResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='5373C821-65D2-1764-B9F9-951914937FF5'),
  result?: [ 
    {
      code?: string(name='Code', example='GOODS'),
      desc?: string(name='Desc', example='生活及洗漱用品'),
      icon?: string(name='Icon', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/changjingfenlei/wupintianjia.png'),
      name?: string(name='Name', example='物品添加'),
      type?: string(name='Type', example='HOTEL_SERVICE'),
    }
  ](name='Result'),
}

model ListHotelServiceCategoryResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelServiceCategoryResponseBody(name='body'),
}

/**
 * @summary 服务分类列表
 *
 * @param tmpReq ListHotelServiceCategoryRequest
 * @param headers ListHotelServiceCategoryHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelServiceCategoryResponse
 */
async function listHotelServiceCategoryWithOptions(tmpReq: ListHotelServiceCategoryRequest, headers: ListHotelServiceCategoryHeaders, runtime: $RuntimeOptions): ListHotelServiceCategoryResponse {
  tmpReq.validate();
  var request = new ListHotelServiceCategoryShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.payload)) {
    request.payloadShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.payload, 'Payload', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.payloadShrink)) {
    query['Payload'] = request.payloadShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotelServiceCategory',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listHotelServiceCategory`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 服务分类列表
 *
 * @param request ListHotelServiceCategoryRequest
 * @return ListHotelServiceCategoryResponse
 */
async function listHotelServiceCategory(request: ListHotelServiceCategoryRequest): ListHotelServiceCategoryResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelServiceCategoryHeaders{};
  return listHotelServiceCategoryWithOptions(request, headers, runtime);
}

model ListHotelsHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListHotelsRequest {
  hotelRequest?: {
    hotelId?: string(name='HotelId'),
  }(name='HotelRequest', nullable=true),
  page?: {
    pageNumber?: int32(name='PageNumber', description='This parameter is required.', example='1'),
    pageSize?: int32(name='PageSize', description='This parameter is required.', example='10'),
  }(name='Page', description='This parameter is required.'),
  status?: int32(name='Status', description='This parameter is required.', example='1'),
}

model ListHotelsShrinkRequest {
  hotelRequestShrink?: string(name='HotelRequest', nullable=true),
  pageShrink?: string(name='Page', description='This parameter is required.'),
  status?: int32(name='Status', description='This parameter is required.', example='1'),
}

model ListHotelsResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', description='RequestId'),
  result?: {
    hotelInfoList?: [ 
      {
        accountNames?: [ string ](name='AccountNames'),
        createTime?: long(name='CreateTime', example='1654568802000'),
        hotelAddress?: string(name='HotelAddress', example='酒店地址'),
        hotelId?: string(name='HotelId', example='73ab1b03018d4da69b5bef17095f569b'),
        hotelName?: string(name='HotelName', example='酒店名称'),
        industryType?: string(name='IndustryType', example='酒店'),
        phoneNumber?: string(name='PhoneNumber', example='13312340987'),
        relatedProductName?: string(name='RelatedProductName', example='测试产品'),
        roomNum?: int32(name='RoomNum', example='12'),
        status?: int32(name='Status', example='1'),
      }
    ](name='HotelInfoList'),
    page?: {
      hasNext?: boolean(name='HasNext'),
      pageNumber?: int32(name='PageNumber', example='1'),
      pageSize?: int32(name='PageSize', example='10'),
      total?: int32(name='Total', example='23'),
      totalPage?: int32(name='TotalPage', example='3'),
    }(name='Page'),
  }(name='Result'),
}

model ListHotelsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListHotelsResponseBody(name='body'),
}

/**
 * @summary 酒店列表(待审批/已拒绝/已通过)
 *
 * @param tmpReq ListHotelsRequest
 * @param headers ListHotelsHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListHotelsResponse
 */
async function listHotelsWithOptions(tmpReq: ListHotelsRequest, headers: ListHotelsHeaders, runtime: $RuntimeOptions): ListHotelsResponse {
  tmpReq.validate();
  var request = new ListHotelsShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.hotelRequest)) {
    request.hotelRequestShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.hotelRequest, 'HotelRequest', 'json');
  }
  if (!$isNull(tmpReq.page)) {
    request.pageShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.page, 'Page', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.hotelRequestShrink)) {
    query['HotelRequest'] = request.hotelRequestShrink;
  }
  if (!$isNull(request.pageShrink)) {
    query['Page'] = request.pageShrink;
  }

  var body : map[string]any = {};
  if (!$isNull(request.status)) {
    body['Status'] = request.status;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListHotels',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listHotels`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店列表(待审批/已拒绝/已通过)
 *
 * @param request ListHotelsRequest
 * @return ListHotelsResponse
 */
async function listHotels(request: ListHotelsRequest): ListHotelsResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListHotelsHeaders{};
  return listHotelsWithOptions(request, headers, runtime);
}

model ListInfraredDeviceBrandsHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListInfraredDeviceBrandsRequest {
  category?: string(name='Category', description='This parameter is required.'),
  serviceProvider?: string(name='ServiceProvider'),
}

model ListInfraredDeviceBrandsResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='860194F7-9593-50EA-8E53-BCEC0D325A00'),
  result?: map[string][ string ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ListInfraredDeviceBrandsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListInfraredDeviceBrandsResponseBody(name='body'),
}

/**
 * @summary 查询红外品牌列表
 *
 * @param request ListInfraredDeviceBrandsRequest
 * @param headers ListInfraredDeviceBrandsHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListInfraredDeviceBrandsResponse
 */
async function listInfraredDeviceBrandsWithOptions(request: ListInfraredDeviceBrandsRequest, headers: ListInfraredDeviceBrandsHeaders, runtime: $RuntimeOptions): ListInfraredDeviceBrandsResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.category)) {
    body['Category'] = request.category;
  }
  if (!$isNull(request.serviceProvider)) {
    body['ServiceProvider'] = request.serviceProvider;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListInfraredDeviceBrands',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listInfraredDeviceBrands`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询红外品牌列表
 *
 * @param request ListInfraredDeviceBrandsRequest
 * @return ListInfraredDeviceBrandsResponse
 */
async function listInfraredDeviceBrands(request: ListInfraredDeviceBrandsRequest): ListInfraredDeviceBrandsResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListInfraredDeviceBrandsHeaders{};
  return listInfraredDeviceBrandsWithOptions(request, headers, runtime);
}

model ListInfraredRemoteControllersHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListInfraredRemoteControllersRequest {
  brand?: string(name='Brand'),
  category?: string(name='Category', description='This parameter is required.'),
  city?: string(name='City'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  province?: string(name='Province'),
  serviceProvider?: string(name='ServiceProvider'),
}

model ListInfraredRemoteControllersResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0C90A059-3653-5356-A78E-8A6BDA606155'),
  result?: [ 
    {
      index?: int32(name='Index', example='1'),
      rid?: long(name='Rid', example='3747'),
      version?: string(name='Version', example='4'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ListInfraredRemoteControllersResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListInfraredRemoteControllersResponseBody(name='body'),
}

/**
 * @summary 查询红外码库列表
 *
 * @param request ListInfraredRemoteControllersRequest
 * @param headers ListInfraredRemoteControllersHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListInfraredRemoteControllersResponse
 */
async function listInfraredRemoteControllersWithOptions(request: ListInfraredRemoteControllersRequest, headers: ListInfraredRemoteControllersHeaders, runtime: $RuntimeOptions): ListInfraredRemoteControllersResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.brand)) {
    body['Brand'] = request.brand;
  }
  if (!$isNull(request.category)) {
    body['Category'] = request.category;
  }
  if (!$isNull(request.city)) {
    body['City'] = request.city;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.province)) {
    body['Province'] = request.province;
  }
  if (!$isNull(request.serviceProvider)) {
    body['ServiceProvider'] = request.serviceProvider;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListInfraredRemoteControllers',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listInfraredRemoteControllers`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询红外码库列表
 *
 * @param request ListInfraredRemoteControllersRequest
 * @return ListInfraredRemoteControllersResponse
 */
async function listInfraredRemoteControllers(request: ListInfraredRemoteControllersRequest): ListInfraredRemoteControllersResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListInfraredRemoteControllersHeaders{};
  return listInfraredRemoteControllersWithOptions(request, headers, runtime);
}

model ListSTBServiceProvidersHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListSTBServiceProvidersRequest {
  city?: string(name='City', description='This parameter is required.'),
  province?: string(name='Province', description='This parameter is required.'),
}

model ListSTBServiceProvidersResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='1036C376-7A37-5A73-BE8B-C6DB40107EC1'),
  result?: map[string][ string ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ListSTBServiceProvidersResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListSTBServiceProvidersResponseBody(name='body'),
}

/**
 * @summary 查询服务提供商
 *
 * @param request ListSTBServiceProvidersRequest
 * @param headers ListSTBServiceProvidersHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListSTBServiceProvidersResponse
 */
async function listSTBServiceProvidersWithOptions(request: ListSTBServiceProvidersRequest, headers: ListSTBServiceProvidersHeaders, runtime: $RuntimeOptions): ListSTBServiceProvidersResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.city)) {
    body['City'] = request.city;
  }
  if (!$isNull(request.province)) {
    body['Province'] = request.province;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListSTBServiceProviders',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listSTBServiceProviders`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询服务提供商
 *
 * @param request ListSTBServiceProvidersRequest
 * @return ListSTBServiceProvidersResponse
 */
async function listSTBServiceProviders(request: ListSTBServiceProvidersRequest): ListSTBServiceProvidersResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListSTBServiceProvidersHeaders{};
  return listSTBServiceProvidersWithOptions(request, headers, runtime);
}

model ListSceneCategoryHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListSceneCategoryRequest {
  hotelId?: string(name='HotelId', description='hotelId

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  type?: string(name='Type', description='This parameter is required.', example='REPAIR'),
}

model ListSceneCategoryResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', description='RequestId', example='0EC7*726E'),
  result?: [ string ](name='Result'),
}

model ListSceneCategoryResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListSceneCategoryResponseBody(name='body'),
}

/**
 * @summary 酒店场景分类
 *
 * @param request ListSceneCategoryRequest
 * @param headers ListSceneCategoryHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListSceneCategoryResponse
 */
async function listSceneCategoryWithOptions(request: ListSceneCategoryRequest, headers: ListSceneCategoryHeaders, runtime: $RuntimeOptions): ListSceneCategoryResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.type)) {
    body['Type'] = request.type;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListSceneCategory',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listSceneCategory`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店场景分类
 *
 * @param request ListSceneCategoryRequest
 * @return ListSceneCategoryResponse
 */
async function listSceneCategory(request: ListSceneCategoryRequest): ListSceneCategoryResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListSceneCategoryHeaders{};
  return listSceneCategoryWithOptions(request, headers, runtime);
}

model ListServiceQAHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListServiceQARequest {
  active?: boolean(name='Active', example='true'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
  keyword?: string(name='Keyword', example='***'),
  page?: {
    pageNumber?: int32(name='PageNumber', example='1'),
    pageSize?: int32(name='PageSize', example='10'),
  }(name='Page'),
}

model ListServiceQAShrinkRequest {
  active?: boolean(name='Active', example='true'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
  keyword?: string(name='Keyword', example='***'),
  pageShrink?: string(name='Page'),
}

model ListServiceQAResponseBody = {
  message?: string(name='Message', example='success'),
  page?: {
    pageNumber?: int32(name='PageNumber', example='1'),
    pageSize?: int32(name='PageSize', example='10'),
    total?: int32(name='Total', example='12'),
  }(name='Page'),
  requestId?: string(name='RequestId', example='0EC7***726E'),
  result?: [ 
    {
      active?: boolean(name='Active', example='true'),
      answer?: string(name='Answer', example='***'),
      gmtModified?: string(name='GmtModified', example='2022-07-27 14:06:27'),
      question?: string(name='Question'),
      serviceQAId?: long(name='ServiceQAId', example='1'),
      templates?: string(name='Templates'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ListServiceQAResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListServiceQAResponseBody(name='body'),
}

/**
 * @summary 查询服务设施问答列表
 *
 * @param tmpReq ListServiceQARequest
 * @param headers ListServiceQAHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListServiceQAResponse
 */
async function listServiceQAWithOptions(tmpReq: ListServiceQARequest, headers: ListServiceQAHeaders, runtime: $RuntimeOptions): ListServiceQAResponse {
  tmpReq.validate();
  var request = new ListServiceQAShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.page)) {
    request.pageShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.page, 'Page', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.active)) {
    body['Active'] = request.active;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.keyword)) {
    body['Keyword'] = request.keyword;
  }
  if (!$isNull(request.pageShrink)) {
    body['Page'] = request.pageShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListServiceQA',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listServiceQA`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询服务设施问答列表
 *
 * @param request ListServiceQARequest
 * @return ListServiceQAResponse
 */
async function listServiceQA(request: ListServiceQARequest): ListServiceQAResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListServiceQAHeaders{};
  return listServiceQAWithOptions(request, headers, runtime);
}

model ListTicketsHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ListTicketsRequest {
  endTime?: string(name='EndTime', example='2022-09-14 14:23:00'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  isDesc?: boolean(name='IsDesc', example='true'),
  isNeedCallback?: boolean(name='IsNeedCallback', example='false'),
  isNeedCharges?: boolean(name='IsNeedCharges', example='false'),
  page?: {
    pageNumber?: int32(name='PageNumber', example='1'),
    pageSize?: int32(name='PageSize', example='10'),
  }(name='Page'),
  roomNo?: string(name='RoomNo', example='1211'),
  sortField?: string(name='SortField', example='gmtCalled'),
  startTime?: string(name='StartTime', example='2022-04-08 09:39:00'),
  status?: string(name='Status', example='waiting'),
  type?: string(name='Type', example='""'),
}

model ListTicketsShrinkRequest {
  endTime?: string(name='EndTime', example='2022-09-14 14:23:00'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  isDesc?: boolean(name='IsDesc', example='true'),
  isNeedCallback?: boolean(name='IsNeedCallback', example='false'),
  isNeedCharges?: boolean(name='IsNeedCharges', example='false'),
  pageShrink?: string(name='Page'),
  roomNo?: string(name='RoomNo', example='1211'),
  sortField?: string(name='SortField', example='gmtCalled'),
  startTime?: string(name='StartTime', example='2022-04-08 09:39:00'),
  status?: string(name='Status', example='waiting'),
  type?: string(name='Type', example='""'),
}

model ListTicketsResponseBody = {
  message?: string(name='Message', example='success'),
  page?: {
    pageNumber?: int32(name='PageNumber', example='1'),
    pageSize?: int32(name='PageSize', example='10'),
    total?: int32(name='Total', example='5'),
  }(name='Page'),
  requestId?: string(name='RequestId', example='0EC7***726E'),
  result?: [ 
    {
      action?: boolean(name='Action', example='false'),
      assignedHandler?: string(name='AssignedHandler', example='***'),
      chargesRemark?: string(name='ChargesRemark', example='***'),
      completeRemark?: string(name='CompleteRemark', example='***'),
      dialogs?: [ 
        {
          answer?: string(name='Answer'),
          question?: string(name='Question'),
        }
      ](name='Dialogs'),
      gmtCalled?: string(name='GmtCalled', example='2023-01-09 00:00:00'),
      gmtCreate?: string(name='GmtCreate', example='2023-01-09 00:00:00'),
      gmtDelayed?: string(name='GmtDelayed', example='2023-01-09 00:00:00'),
      gmtModified?: string(name='GmtModified', example='2023-01-09 00:00:00'),
      groupKey?: string(name='GroupKey', example='2023***93975'),
      id?: long(name='Id', example='45'),
      isAcceptedCharges?: boolean(name='IsAcceptedCharges', example='false'),
      isDelayed?: boolean(name='IsDelayed', example='true'),
      isNeedCallback?: boolean(name='IsNeedCallback', example='false'),
      isNeedCharges?: boolean(name='IsNeedCharges', example='false'),
      operations?: [ map[string]any ](name='Operations'),
      remark?: string(name='Remark', example='***'),
      roomNo?: string(name='RoomNo', example='101'),
      status?: string(name='Status', example='waiting'),
      type?: string(name='Type', example='""'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ListTicketsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ListTicketsResponseBody(name='body'),
}

/**
 * @summary 查询工单列表
 *
 * @param tmpReq ListTicketsRequest
 * @param headers ListTicketsHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ListTicketsResponse
 */
async function listTicketsWithOptions(tmpReq: ListTicketsRequest, headers: ListTicketsHeaders, runtime: $RuntimeOptions): ListTicketsResponse {
  tmpReq.validate();
  var request = new ListTicketsShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.page)) {
    request.pageShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.page, 'Page', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.endTime)) {
    body['EndTime'] = request.endTime;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.isDesc)) {
    body['IsDesc'] = request.isDesc;
  }
  if (!$isNull(request.isNeedCallback)) {
    body['IsNeedCallback'] = request.isNeedCallback;
  }
  if (!$isNull(request.isNeedCharges)) {
    body['IsNeedCharges'] = request.isNeedCharges;
  }
  if (!$isNull(request.pageShrink)) {
    body['Page'] = request.pageShrink;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }
  if (!$isNull(request.sortField)) {
    body['SortField'] = request.sortField;
  }
  if (!$isNull(request.startTime)) {
    body['StartTime'] = request.startTime;
  }
  if (!$isNull(request.status)) {
    body['Status'] = request.status;
  }
  if (!$isNull(request.type)) {
    body['Type'] = request.type;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ListTickets',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/listTickets`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询工单列表
 *
 * @param request ListTicketsRequest
 * @return ListTicketsResponse
 */
async function listTickets(request: ListTicketsRequest): ListTicketsResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ListTicketsHeaders{};
  return listTicketsWithOptions(request, headers, runtime);
}

model PageGetHotelRoomDevicesHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model PageGetHotelRoomDevicesRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7***83'),
  pageNumber?: int32(name='PageNumber', description='This parameter is required.', example='1'),
  pageSize?: int32(name='PageSize', description='This parameter is required.', example='10'),
}

model PageGetHotelRoomDevicesResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  page?: {
    end?: int32(name='End', example='4'),
    hasNext?: boolean(name='HasNext', example='False'),
    pageNumber?: int32(name='PageNumber', example='1'),
    pageSize?: int32(name='PageSize', example='10'),
    start?: int32(name='Start', example='0'),
    total?: int32(name='Total', example='5'),
    totalPage?: int32(name='TotalPage', example='1'),
  }(name='Page'),
  requestId?: string(name='RequestId', example='4EFBDDF4-B19D-526C-8C3D-CD8AB51974EE'),
  result?: [ 
    {
      firmwareVersion?: string(name='FirmwareVersion', example='V21.10.00.313'),
      hotelId?: string(name='HotelId', example='a7***83'),
      mac?: string(name='Mac', example='b4:xx:xx:xx:65:2b'),
      onlineStatus?: int32(name='OnlineStatus', example='1'),
      roomNo?: string(name='RoomNo', example='2001'),
      sn?: string(name='Sn', example='1200xxx048'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model PageGetHotelRoomDevicesResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: PageGetHotelRoomDevicesResponseBody(name='body'),
}

/**
 * @summary 分页查询酒店房间主控设备
 *
 * @param request PageGetHotelRoomDevicesRequest
 * @param headers PageGetHotelRoomDevicesHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return PageGetHotelRoomDevicesResponse
 */
async function pageGetHotelRoomDevicesWithOptions(request: PageGetHotelRoomDevicesRequest, headers: PageGetHotelRoomDevicesHeaders, runtime: $RuntimeOptions): PageGetHotelRoomDevicesResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.pageNumber)) {
    body['PageNumber'] = request.pageNumber;
  }
  if (!$isNull(request.pageSize)) {
    body['PageSize'] = request.pageSize;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'PageGetHotelRoomDevices',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/pageGetHotelRoomDevices`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 分页查询酒店房间主控设备
 *
 * @param request PageGetHotelRoomDevicesRequest
 * @return PageGetHotelRoomDevicesResponse
 */
async function pageGetHotelRoomDevices(request: PageGetHotelRoomDevicesRequest): PageGetHotelRoomDevicesResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new PageGetHotelRoomDevicesHeaders{};
  return pageGetHotelRoomDevicesWithOptions(request, headers, runtime);
}

model PmsEventReportHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model PmsEventReportRequest {
  payload?: string(name='Payload', description='This parameter is required.'),
}

model PmsEventReportResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model PmsEventReportResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: PmsEventReportResponseBody(name='body'),
}

/**
 * @summary pms事件上报
 *
 * @param request PmsEventReportRequest
 * @param headers PmsEventReportHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return PmsEventReportResponse
 */
async function pmsEventReportWithOptions(request: PmsEventReportRequest, headers: PmsEventReportHeaders, runtime: $RuntimeOptions): PmsEventReportResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.payload)) {
    body['Payload'] = request.payload;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'PmsEventReport',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/pmsEventReport`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary pms事件上报
 *
 * @param request PmsEventReportRequest
 * @return PmsEventReportResponse
 */
async function pmsEventReport(request: PmsEventReportRequest): PmsEventReportResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new PmsEventReportHeaders{};
  return pmsEventReportWithOptions(request, headers, runtime);
}

model PushHotelMessageHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model PushHotelMessageRequest {
  pushHotelMessageReq?: {
    hotelId?: string(name='HotelId', description='This parameter is required.', example='e6dd44fd16084db8a60d69fd625d9f0f'),
    paramMap?: map[string]string(name='ParamMap'),
    roomNo?: string(name='RoomNo', description='This parameter is required.', example='102'),
    templateId?: long(name='TemplateId', description='This parameter is required.', example='1'),
  }(name='PushHotelMessageReq', description='pushHotelMessageReq

This parameter is required.'),
}

model PushHotelMessageShrinkRequest {
  pushHotelMessageReqShrink?: string(name='PushHotelMessageReq', description='pushHotelMessageReq

This parameter is required.'),
}

model PushHotelMessageResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId'),
  result?: boolean(name='Result'),
}

model PushHotelMessageResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: PushHotelMessageResponseBody(name='body'),
}

/**
 * @summary 推送酒店消息
 *
 * @param tmpReq PushHotelMessageRequest
 * @param headers PushHotelMessageHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return PushHotelMessageResponse
 */
async function pushHotelMessageWithOptions(tmpReq: PushHotelMessageRequest, headers: PushHotelMessageHeaders, runtime: $RuntimeOptions): PushHotelMessageResponse {
  tmpReq.validate();
  var request = new PushHotelMessageShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.pushHotelMessageReq)) {
    request.pushHotelMessageReqShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.pushHotelMessageReq, 'PushHotelMessageReq', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.pushHotelMessageReqShrink)) {
    query['PushHotelMessageReq'] = request.pushHotelMessageReqShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'PushHotelMessage',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/pushHotelMessage`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 推送酒店消息
 *
 * @param request PushHotelMessageRequest
 * @return PushHotelMessageResponse
 */
async function pushHotelMessage(request: PushHotelMessageRequest): PushHotelMessageResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new PushHotelMessageHeaders{};
  return pushHotelMessageWithOptions(request, headers, runtime);
}

model PushVoiceBoxCommandsHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model PushVoiceBoxCommandsRequest {
  commands?: [ 
    {
      commandDomain?: string(name='CommandDomain', description='This parameter is required.'),
      commandName?: string(name='CommandName', description='This parameter is required.'),
      payload?: string(name='Payload'),
    }
  ](name='Commands', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.'),
  roomNo?: string(name='RoomNo', description='This parameter is required.'),
}

model PushVoiceBoxCommandsShrinkRequest {
  commandsShrink?: string(name='Commands', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.'),
  roomNo?: string(name='RoomNo', description='This parameter is required.'),
}

model PushVoiceBoxCommandsResponseBody = {
  code?: int32(name='Code'),
  message?: string(name='Message'),
  requestId?: string(name='RequestId'),
  result?: boolean(name='Result'),
  statusCode?: int32(name='StatusCode'),
}

model PushVoiceBoxCommandsResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: PushVoiceBoxCommandsResponseBody(name='body'),
}

/**
 * @summary 推送音箱指令
 *
 * @param tmpReq PushVoiceBoxCommandsRequest
 * @param headers PushVoiceBoxCommandsHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return PushVoiceBoxCommandsResponse
 */
async function pushVoiceBoxCommandsWithOptions(tmpReq: PushVoiceBoxCommandsRequest, headers: PushVoiceBoxCommandsHeaders, runtime: $RuntimeOptions): PushVoiceBoxCommandsResponse {
  tmpReq.validate();
  var request = new PushVoiceBoxCommandsShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.commands)) {
    request.commandsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.commands, 'Commands', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.commandsShrink)) {
    body['Commands'] = request.commandsShrink;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'PushVoiceBoxCommands',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/pushVoiceBoxCommands`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 推送音箱指令
 *
 * @param request PushVoiceBoxCommandsRequest
 * @return PushVoiceBoxCommandsResponse
 */
async function pushVoiceBoxCommands(request: PushVoiceBoxCommandsRequest): PushVoiceBoxCommandsResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new PushVoiceBoxCommandsHeaders{};
  return pushVoiceBoxCommandsWithOptions(request, headers, runtime);
}

model PushWelcomeHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model PushWelcomeRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  roomName?: string(name='RoomName'),
  roomNo?: string(name='RoomNo', example='1211'),
  welcomeMusicUrl?: string(name='WelcomeMusicUrl', example='http://ailabsaicloudservice.alicdn.com/tmp/a.wav'),
  welcomeText?: string(name='WelcomeText', description='This parameter is required.'),
}

model PushWelcomeResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model PushWelcomeResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: PushWelcomeResponseBody(name='body'),
}

/**
 * @summary 直接推送欢迎语
 *
 * @param request PushWelcomeRequest
 * @param headers PushWelcomeHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return PushWelcomeResponse
 */
async function pushWelcomeWithOptions(request: PushWelcomeRequest, headers: PushWelcomeHeaders, runtime: $RuntimeOptions): PushWelcomeResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomName)) {
    body['RoomName'] = request.roomName;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }
  if (!$isNull(request.welcomeMusicUrl)) {
    body['WelcomeMusicUrl'] = request.welcomeMusicUrl;
  }
  if (!$isNull(request.welcomeText)) {
    body['WelcomeText'] = request.welcomeText;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'PushWelcome',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/pushWelcome`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 直接推送欢迎语
 *
 * @param request PushWelcomeRequest
 * @return PushWelcomeResponse
 */
async function pushWelcome(request: PushWelcomeRequest): PushWelcomeResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new PushWelcomeHeaders{};
  return pushWelcomeWithOptions(request, headers, runtime);
}

model PushWelcomeTextAndMusicHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model PushWelcomeTextAndMusicRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  roomName?: string(name='RoomName'),
  roomNo?: string(name='RoomNo', example='1211'),
  templateVariable?: map[string]string(name='TemplateVariable'),
}

model PushWelcomeTextAndMusicShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  roomName?: string(name='RoomName'),
  roomNo?: string(name='RoomNo', example='1211'),
  templateVariableShrink?: string(name='TemplateVariable'),
}

model PushWelcomeTextAndMusicResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='F7E2****B7C94'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model PushWelcomeTextAndMusicResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: PushWelcomeTextAndMusicResponseBody(name='body'),
}

/**
 * @summary 推送欢迎语
 *
 * @param tmpReq PushWelcomeTextAndMusicRequest
 * @param headers PushWelcomeTextAndMusicHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return PushWelcomeTextAndMusicResponse
 */
async function pushWelcomeTextAndMusicWithOptions(tmpReq: PushWelcomeTextAndMusicRequest, headers: PushWelcomeTextAndMusicHeaders, runtime: $RuntimeOptions): PushWelcomeTextAndMusicResponse {
  tmpReq.validate();
  var request = new PushWelcomeTextAndMusicShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.templateVariable)) {
    request.templateVariableShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.templateVariable, 'TemplateVariable', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomName)) {
    body['RoomName'] = request.roomName;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }
  if (!$isNull(request.templateVariableShrink)) {
    body['TemplateVariable'] = request.templateVariableShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'PushWelcomeTextAndMusic',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/pushWelcomeTextAndMusic`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 推送欢迎语
 *
 * @param request PushWelcomeTextAndMusicRequest
 * @return PushWelcomeTextAndMusicResponse
 */
async function pushWelcomeTextAndMusic(request: PushWelcomeTextAndMusicRequest): PushWelcomeTextAndMusicResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new PushWelcomeTextAndMusicHeaders{};
  return pushWelcomeTextAndMusicWithOptions(request, headers, runtime);
}

model QueryDeviceStatusHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model QueryDeviceStatusRequest {
  payload?: {
    locationDevices?: [ 
      {
        deviceNumber?: string(name='DeviceNumber', example='night_light'),
        deviceType?: string(name='DeviceType', example='light'),
        location?: string(name='Location', example='room'),
      }
    ](name='LocationDevices'),
    properties?: map[string]string(name='Properties'),
  }(name='Payload'),
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='123'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='HOTEL'),
    id?: string(name='Id', description='This parameter is required.', example='rV/XSgPuxZjx/hN3iw8U+e8ou***lk1r43LWcVW6fvY1Rr4sEPFodpnA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId', example='123'),
  }(name='UserInfo'),
}

model QueryDeviceStatusShrinkRequest {
  payloadShrink?: string(name='Payload'),
  userInfoShrink?: string(name='UserInfo'),
}

model QueryDeviceStatusResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='fdsgrefds'),
  result?: [ map[string]string ](name='Result'),
}

model QueryDeviceStatusResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryDeviceStatusResponseBody(name='body'),
}

/**
 * @summary 查询酒店设备状态/模式状态查询
 *
 * @param tmpReq QueryDeviceStatusRequest
 * @param headers QueryDeviceStatusHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryDeviceStatusResponse
 */
async function queryDeviceStatusWithOptions(tmpReq: QueryDeviceStatusRequest, headers: QueryDeviceStatusHeaders, runtime: $RuntimeOptions): QueryDeviceStatusResponse {
  tmpReq.validate();
  var request = new QueryDeviceStatusShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.payload)) {
    request.payloadShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.payload, 'Payload', 'json');
  }
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.payloadShrink)) {
    query['Payload'] = request.payloadShrink;
  }
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'QueryDeviceStatus',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/queryDeviceStatus`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询酒店设备状态/模式状态查询
 *
 * @param request QueryDeviceStatusRequest
 * @return QueryDeviceStatusResponse
 */
async function queryDeviceStatus(request: QueryDeviceStatusRequest): QueryDeviceStatusResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new QueryDeviceStatusHeaders{};
  return queryDeviceStatusWithOptions(request, headers, runtime);
}

model QueryHotelRoomDetailHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model QueryHotelRoomDetailRequest {
  hotelId?: string(name='HotelId', example='520a0c0***5eb'),
  mac?: string(name='Mac', example='38:c8:**:**:f5:22'),
  roomNo?: string(name='RoomNo', example='1211'),
  sn?: string(name='Sn', description='设备sn信息
注：若在mac uuid sn全都输入的情况下 按照输入正确的内容查询 若全输入都是正确的 则 按照 uuid > mac > sn 优先级查询
传入mac uuid sn其中一个 则酒店id和房间号可不传', example='280**28'),
  uuid?: string(name='Uuid', example='588***96j5WU'),
}

model QueryHotelRoomDetailResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: {
    authAccounts?: [ 
      {
        accountName?: string(name='AccountName'),
        authTime?: string(name='AuthTime', example='2023-01-01 12:00:00'),
      }
    ](name='AuthAccounts'),
    connectType?: string(name='ConnectType', example='rcu'),
    creatorAccountName?: string(name='CreatorAccountName'),
    deviceInfos?: [ 
      {
        activeTime?: string(name='ActiveTime', example='2023-01-01 12:00:00'),
        deviceName?: string(name='DeviceName'),
        firmwareVersion?: string(name='FirmwareVersion', example='6.1.8-RS-20230425.1806'),
        mac?: string(name='Mac', example='fa:03:23:58:c3:00'),
        onlineStatus?: int32(name='OnlineStatus', example='1'),
        sn?: string(name='Sn', example='sag42dlz4qf'),
        uuid?: string(name='Uuid', example='41c95c18a0a643bcb58edf438877def5'),
      }
    ](name='DeviceInfos'),
    hotelId?: string(name='HotelId', example='a7***83'),
    hotelName?: string(name='HotelName'),
    otherService?: {
      openCall?: boolean(name='OpenCall', example='false'),
      unhandleTickets?: int32(name='UnhandleTickets', example='0'),
    }(name='OtherService'),
    roomControlInfo?: {
      appId?: long(name='AppId', example='78'),
      appName?: string(name='AppName', example='app'),
      deviceInfos?: [ 
        {
          categoryEnName?: string(name='CategoryEnName', example='light'),
          categoryId?: long(name='CategoryId', example='3'),
          categoryName?: string(name='CategoryName'),
          deviceConnectType?: string(name='DeviceConnectType', example='rcu'),
          deviceCount?: int32(name='DeviceCount', example='4'),
          deviceId?: string(name='DeviceId', example='readLight'),
          deviceName?: string(name='DeviceName'),
          locationEnName?: string(name='LocationEnName', example='room'),
          locationId?: long(name='LocationId', example='1'),
          locationName?: string(name='LocationName'),
          productKey?: string(name='ProductKey', example='a1ueWGP6W2L'),
        }
      ](name='DeviceInfos'),
      rcuUrl?: string(name='RcuUrl', example='http://www.xxx.com'),
      templateId?: long(name='TemplateId', example='1170'),
      templateName?: string(name='TemplateName'),
    }(name='RoomControlInfo'),
    roomNo?: string(name='RoomNo', example='2001'),
    roomServiceInfo?: {
      bookServiceCnt?: int32(name='BookServiceCnt', example='0'),
      goodsServiceCnt?: int32(name='GoodsServiceCnt', example='10'),
      repairServiceCnt?: int32(name='RepairServiceCnt', example='10'),
      roomServiceCnt?: int32(name='RoomServiceCnt', example='12'),
    }(name='RoomServiceInfo'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model QueryHotelRoomDetailResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryHotelRoomDetailResponseBody(name='body'),
}

/**
 * @summary 查询房间详细信息
 *
 * @param request QueryHotelRoomDetailRequest
 * @param headers QueryHotelRoomDetailHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryHotelRoomDetailResponse
 */
async function queryHotelRoomDetailWithOptions(request: QueryHotelRoomDetailRequest, headers: QueryHotelRoomDetailHeaders, runtime: $RuntimeOptions): QueryHotelRoomDetailResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.mac)) {
    body['Mac'] = request.mac;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }
  if (!$isNull(request.sn)) {
    body['Sn'] = request.sn;
  }
  if (!$isNull(request.uuid)) {
    body['Uuid'] = request.uuid;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'QueryHotelRoomDetail',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/queryHotelRoomDetail`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询房间详细信息
 *
 * @param request QueryHotelRoomDetailRequest
 * @return QueryHotelRoomDetailResponse
 */
async function queryHotelRoomDetail(request: QueryHotelRoomDetailRequest): QueryHotelRoomDetailResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new QueryHotelRoomDetailHeaders{};
  return queryHotelRoomDetailWithOptions(request, headers, runtime);
}

model QueryRoomControlDevicesHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model QueryRoomControlDevicesRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
}

model QueryRoomControlDevicesResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='fdsgfdscvre'),
  result?: [ 
    {
      devices?: [ 
        {
          aliasList?: [ string ](name='AliasList'),
          connectType?: string(name='ConnectType'),
          DN?: string(name='DN'),
          deviceName?: string(name='DeviceName'),
          deviceStatus?: string(name='DeviceStatus'),
          multiKeySwitchExt?: {
            switchList?: [ 
              {
                aliasList?: [ string ](name='AliasList'),
                category?: string(name='Category'),
                deviceIndex?: int32(name='DeviceIndex'),
                deviceName?: string(name='DeviceName'),
                deviceStatus?: string(name='DeviceStatus'),
                elementCode?: string(name='ElementCode'),
                location?: string(name='Location'),
              }
            ](name='SwitchList'),
          }(name='MultiKeySwitchExt'),
          name?: string(name='Name', example='light'),
          number?: string(name='Number', example='night_light'),
          PK?: string(name='PK'),
        }
      ](name='Devices'),
      location?: string(name='Location', example='room'),
      locationName?: string(name='LocationName'),
    }
  ](name='Result'),
}

model QueryRoomControlDevicesResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryRoomControlDevicesResponseBody(name='body'),
}

/**
 * @summary 查询酒店房间客控设备
 *
 * @param request QueryRoomControlDevicesRequest
 * @param headers QueryRoomControlDevicesHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryRoomControlDevicesResponse
 */
async function queryRoomControlDevicesWithOptions(request: QueryRoomControlDevicesRequest, headers: QueryRoomControlDevicesHeaders, runtime: $RuntimeOptions): QueryRoomControlDevicesResponse {
  request.validate();
  var query : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    query['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNo)) {
    query['RoomNo'] = request.roomNo;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'QueryRoomControlDevices',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/queryRoomControlDevices`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询酒店房间客控设备
 *
 * @param request QueryRoomControlDevicesRequest
 * @return QueryRoomControlDevicesResponse
 */
async function queryRoomControlDevices(request: QueryRoomControlDevicesRequest): QueryRoomControlDevicesResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new QueryRoomControlDevicesHeaders{};
  return queryRoomControlDevicesWithOptions(request, headers, runtime);
}

model QueryRoomControlDevicesAndStatusHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model QueryRoomControlDevicesAndStatusRequest {
  hotelId?: string(name='HotelId', example='af7***536'),
  roomNo?: string(name='RoomNo', example='1211'),
}

model QueryRoomControlDevicesAndStatusResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C67***6FA'),
  result?: [ 
    {
      devices?: [ 
        {
          aliasList?: [ string ](name='AliasList'),
          brand?: string(name='Brand'),
          city?: string(name='City'),
          connectType?: string(name='ConnectType', example='rcu'),
          deviceName?: string(name='DeviceName'),
          deviceStatus?: string(name='DeviceStatus', example='{"powerstate": "1"}'),
          dn?: string(name='Dn', example='3c5d***9ec'),
          infraredId?: string(name='InfraredId', example='9**7'),
          infraredIndex?: string(name='InfraredIndex', example='2'),
          infraredVersion?: string(name='InfraredVersion', example='3.0'),
          multiKeySwitchExt?: {
            switchList?: [ 
              {
                aliasList?: [ string ](name='AliasList'),
                category?: string(name='Category', example='light'),
                deviceIndex?: int32(name='DeviceIndex', example='1'),
                deviceName?: string(name='DeviceName'),
                deviceStatus?: string(name='DeviceStatus', example='{
      "powerstate": "0"
}'),
                elementCode?: string(name='ElementCode', example='e2'),
                location?: string(name='Location', example='room'),
                status?: map[string]string(name='Status'),
                tags?: [ string ](name='Tags'),
              }
            ](name='SwitchList'),
          }(name='MultiKeySwitchExt'),
          name?: string(name='Name', example='light'),
          number?: string(name='Number', example='night_light'),
          pk?: string(name='Pk', example='50255129'),
          province?: string(name='Province'),
          serviceProvider?: string(name='ServiceProvider'),
          status?: map[string]string(name='Status'),
        }
      ](name='Devices'),
      location?: string(name='Location', example='room'),
      locationName?: string(name='LocationName'),
      roomNo?: string(name='RoomNo', example='1211'),
    }
  ](name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model QueryRoomControlDevicesAndStatusResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryRoomControlDevicesAndStatusResponseBody(name='body'),
}

/**
 * @summary 查询房间被控设备包含设备状态
 *
 * @param request QueryRoomControlDevicesAndStatusRequest
 * @param headers QueryRoomControlDevicesAndStatusHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryRoomControlDevicesAndStatusResponse
 */
async function queryRoomControlDevicesAndStatusWithOptions(request: QueryRoomControlDevicesAndStatusRequest, headers: QueryRoomControlDevicesAndStatusHeaders, runtime: $RuntimeOptions): QueryRoomControlDevicesAndStatusResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'QueryRoomControlDevicesAndStatus',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/queryRoomControlDevicesAndStatus`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询房间被控设备包含设备状态
 *
 * @param request QueryRoomControlDevicesAndStatusRequest
 * @return QueryRoomControlDevicesAndStatusResponse
 */
async function queryRoomControlDevicesAndStatus(request: QueryRoomControlDevicesAndStatusRequest): QueryRoomControlDevicesAndStatusResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new QueryRoomControlDevicesAndStatusHeaders{};
  return queryRoomControlDevicesAndStatusWithOptions(request, headers, runtime);
}

model QueryRoomStatusHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model QueryRoomStatusRequest {
  hotelId?: string(name='HotelId', example='cf2446fc9d144c85aaee4f9ae20a96e7'),
  roomNo?: string(name='RoomNo', example='1211'),
}

model QueryRoomStatusResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='FAFCD152-4791-5F2F-B0BE-2DC06FD4F05B'),
  result?: {
    hotelId?: string(name='HotelId', example='cf2446fc9d144c85aaee4f9ae20a96e7'),
    roomNo?: string(name='RoomNo', example='1211'),
    sceneList?: [ 
      {
        sceneName?: string(name='SceneName'),
      }
    ](name='SceneList'),
    statusList?: [ 
      {
        statusName?: string(name='StatusName'),
        statusValue?: string(name='StatusValue'),
        updateTime?: string(name='UpdateTime', example='Thu Jan 09 13:56:51 CST 2025'),
      }
    ](name='StatusList'),
  }(name='Result'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model QueryRoomStatusResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QueryRoomStatusResponseBody(name='body'),
}

/**
 * @summary 查询房态信息
 *
 * @param request QueryRoomStatusRequest
 * @param headers QueryRoomStatusHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return QueryRoomStatusResponse
 */
async function queryRoomStatusWithOptions(request: QueryRoomStatusRequest, headers: QueryRoomStatusHeaders, runtime: $RuntimeOptions): QueryRoomStatusResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'QueryRoomStatus',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/queryRoomStatus`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询房态信息
 *
 * @param request QueryRoomStatusRequest
 * @return QueryRoomStatusResponse
 */
async function queryRoomStatus(request: QueryRoomStatusRequest): QueryRoomStatusResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new QueryRoomStatusHeaders{};
  return queryRoomStatusWithOptions(request, headers, runtime);
}

model QuerySceneListHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model QuerySceneListRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  sceneStates?: [ int32 ](name='SceneStates'),
  sceneTypes?: [ string ](name='SceneTypes'),
  templateInfoIds?: [ string ](name='TemplateInfoIds'),
}

model QuerySceneListShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  sceneStatesShrink?: string(name='SceneStates'),
  sceneTypesShrink?: string(name='SceneTypes'),
  templateInfoIdsShrink?: string(name='TemplateInfoIds'),
}

model QuerySceneListResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='FAFCD152-4791-5F2F-B0BE-2DC06FD4F05B'),
  results?: [ 
    {
      icon?: string(name='Icon', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/changjingmoshi/shuimian.png'),
      sceneId?: string(name='SceneId', example='73'),
      sceneName?: string(name='SceneName'),
      sceneSource?: string(name='SceneSource', example='external'),
      sceneState?: int32(name='SceneState', example='1'),
      sceneType?: string(name='SceneType', example='common'),
      templateInfoDTOList?: [ 
        {
          description?: string(name='Description'),
          id?: long(name='Id', example='6962'),
          name?: string(name='Name', example='101'),
        }
      ](name='TemplateInfoDTOList'),
      unavailableReason?: string(name='UnavailableReason'),
    }
  ](name='Results'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model QuerySceneListResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: QuerySceneListResponseBody(name='body'),
}

/**
 * @summary 查询酒店场景列表
 *
 * @param tmpReq QuerySceneListRequest
 * @param headers QuerySceneListHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return QuerySceneListResponse
 */
async function querySceneListWithOptions(tmpReq: QuerySceneListRequest, headers: QuerySceneListHeaders, runtime: $RuntimeOptions): QuerySceneListResponse {
  tmpReq.validate();
  var request = new QuerySceneListShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.sceneStates)) {
    request.sceneStatesShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.sceneStates, 'SceneStates', 'json');
  }
  if (!$isNull(tmpReq.sceneTypes)) {
    request.sceneTypesShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.sceneTypes, 'SceneTypes', 'json');
  }
  if (!$isNull(tmpReq.templateInfoIds)) {
    request.templateInfoIdsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.templateInfoIds, 'TemplateInfoIds', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.sceneStatesShrink)) {
    body['SceneStates'] = request.sceneStatesShrink;
  }
  if (!$isNull(request.sceneTypesShrink)) {
    body['SceneTypes'] = request.sceneTypesShrink;
  }
  if (!$isNull(request.templateInfoIdsShrink)) {
    body['TemplateInfoIds'] = request.templateInfoIdsShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'QuerySceneList',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/querySceneList`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 查询酒店场景列表
 *
 * @param request QuerySceneListRequest
 * @return QuerySceneListResponse
 */
async function querySceneList(request: QuerySceneListRequest): QuerySceneListResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new QuerySceneListHeaders{};
  return querySceneListWithOptions(request, headers, runtime);
}

model RemoveChildAccountAuthHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model RemoveChildAccountAuthRequest {
  appKey?: string(name='AppKey', description='This parameter is required.', example='30**53'),
  childAccountName?: string(name='ChildAccountName', description='This parameter is required.', example='tbxxxx'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  tbOpenId?: string(name='TbOpenId', description='This parameter is required.', example='AAEV***E3d3Z2ETwh'),
}

model RemoveChildAccountAuthResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='F12B***F34E'),
  result?: boolean(name='Result', example='True'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model RemoveChildAccountAuthResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: RemoveChildAccountAuthResponseBody(name='body'),
}

/**
 * @summary 删除子账号授权
 *
 * @param request RemoveChildAccountAuthRequest
 * @param headers RemoveChildAccountAuthHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return RemoveChildAccountAuthResponse
 */
async function removeChildAccountAuthWithOptions(request: RemoveChildAccountAuthRequest, headers: RemoveChildAccountAuthHeaders, runtime: $RuntimeOptions): RemoveChildAccountAuthResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.appKey)) {
    body['AppKey'] = request.appKey;
  }
  if (!$isNull(request.childAccountName)) {
    body['ChildAccountName'] = request.childAccountName;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.tbOpenId)) {
    body['TbOpenId'] = request.tbOpenId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'RemoveChildAccountAuth',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/removeChildAccountAuth`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 删除子账号授权
 *
 * @param request RemoveChildAccountAuthRequest
 * @return RemoveChildAccountAuthResponse
 */
async function removeChildAccountAuth(request: RemoveChildAccountAuthRequest): RemoveChildAccountAuthResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new RemoveChildAccountAuthHeaders{};
  return removeChildAccountAuthWithOptions(request, headers, runtime);
}

model RemoveHotelHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model RemoveHotelRequest {
  appKey?: string(name='AppKey', description='appkey

This parameter is required.', example='30193305'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='e6dd44fd16084db8a60d69fd625d9f0f'),
  tbOpenId?: string(name='TbOpenId', description='This parameter is required.', example='AAEVK***UE3d3Z2ETwh'),
}

model RemoveHotelResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', description='The ID of the request.', example='73C67BD9-175A-1324-8202-9FAABBB3E6FA'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model RemoveHotelResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: RemoveHotelResponseBody(name='body'),
}

/**
 * @summary 删除酒店项目
 *
 * @param request RemoveHotelRequest
 * @param headers RemoveHotelHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return RemoveHotelResponse
 */
async function removeHotelWithOptions(request: RemoveHotelRequest, headers: RemoveHotelHeaders, runtime: $RuntimeOptions): RemoveHotelResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.appKey)) {
    body['AppKey'] = request.appKey;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.tbOpenId)) {
    body['TbOpenId'] = request.tbOpenId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'RemoveHotel',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/removeHotel`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 删除酒店项目
 *
 * @param request RemoveHotelRequest
 * @return RemoveHotelResponse
 */
async function removeHotel(request: RemoveHotelRequest): RemoveHotelResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new RemoveHotelHeaders{};
  return removeHotelWithOptions(request, headers, runtime);
}

model ResetWelcomeTextAndMusicHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model ResetWelcomeTextAndMusicRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
}

model ResetWelcomeTextAndMusicResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model ResetWelcomeTextAndMusicResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: ResetWelcomeTextAndMusicResponseBody(name='body'),
}

/**
 * @summary 重置欢迎语信息
 *
 * @param request ResetWelcomeTextAndMusicRequest
 * @param headers ResetWelcomeTextAndMusicHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return ResetWelcomeTextAndMusicResponse
 */
async function resetWelcomeTextAndMusicWithOptions(request: ResetWelcomeTextAndMusicRequest, headers: ResetWelcomeTextAndMusicHeaders, runtime: $RuntimeOptions): ResetWelcomeTextAndMusicResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'ResetWelcomeTextAndMusic',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/resetWelcomeTextAndMusic`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 重置欢迎语信息
 *
 * @param request ResetWelcomeTextAndMusicRequest
 * @return ResetWelcomeTextAndMusicResponse
 */
async function resetWelcomeTextAndMusic(request: ResetWelcomeTextAndMusicRequest): ResetWelcomeTextAndMusicResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new ResetWelcomeTextAndMusicHeaders{};
  return resetWelcomeTextAndMusicWithOptions(request, headers, runtime);
}

model RoomCheckOutHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model RoomCheckOutRequest {
  deviceInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='123'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='HOTEL'),
    id?: string(name='Id', description='This parameter is required.', example='rV/XSgPuxZjx/hN3iw8U+e8ou***lk1r43LWcVW6fvY1Rr4sEPFodpnA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId', example='123'),
  }(name='DeviceInfo'),
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='123'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='HOTEL'),
    id?: string(name='Id', description='This parameter is required.', example='rV/XSgPuxZjx/hN3iw8U+e8ou***lk1r43LWcVW6fvY1Rr4sEPFodpnA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId', example='123'),
  }(name='UserInfo'),
}

model RoomCheckOutShrinkRequest {
  deviceInfoShrink?: string(name='DeviceInfo'),
  userInfoShrink?: string(name='UserInfo'),
}

model RoomCheckOutResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='dsvrevd'),
  result?: boolean(name='Result', example='true'),
}

model RoomCheckOutResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: RoomCheckOutResponseBody(name='body'),
}

/**
 * @summary 退房
 *
 * @param tmpReq RoomCheckOutRequest
 * @param headers RoomCheckOutHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return RoomCheckOutResponse
 */
async function roomCheckOutWithOptions(tmpReq: RoomCheckOutRequest, headers: RoomCheckOutHeaders, runtime: $RuntimeOptions): RoomCheckOutResponse {
  tmpReq.validate();
  var request = new RoomCheckOutShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.deviceInfo)) {
    request.deviceInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.deviceInfo, 'DeviceInfo', 'json');
  }
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.deviceInfoShrink)) {
    query['DeviceInfo'] = request.deviceInfoShrink;
  }
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'RoomCheckOut',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/roomCheckOut`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 退房
 *
 * @param request RoomCheckOutRequest
 * @return RoomCheckOutResponse
 */
async function roomCheckOut(request: RoomCheckOutRequest): RoomCheckOutResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new RoomCheckOutHeaders{};
  return roomCheckOutWithOptions(request, headers, runtime);
}

model SubmitHotelOrderHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model SubmitHotelOrderRequest {
  payload?: {
    itemList?: [ 
      {
        itemId?: long(name='ItemId', description='This parameter is required.', example='152860'),
        quantity?: long(name='Quantity', description='This parameter is required.', example='2'),
      }
    ](name='ItemList', description='This parameter is required.'),
    type?: string(name='Type', description='This parameter is required.', example='GOODS'),
  }(name='Payload', description='This parameter is required.'),
  userInfo?: {
    encodeKey?: string(name='EncodeKey', description='This parameter is required.', example='1248494721591392955'),
    encodeType?: string(name='EncodeType', description='This parameter is required.', example='PROJECT_ID'),
    id?: string(name='Id', description='This parameter is required.', example='mFU6VtVU+pgA8lx6rYMo7SPl11t+8b+8ALrn10MIPEdpK/HI9wELAEppYhPI1cYRDa4og8AMjAEBZKbLUwFjFA=='),
    idType?: string(name='IdType', description='This parameter is required.', example='OPEN_ID'),
    organizationId?: string(name='OrganizationId'),
  }(name='UserInfo', description='This parameter is required.'),
}

model SubmitHotelOrderShrinkRequest {
  payloadShrink?: string(name='Payload', description='This parameter is required.'),
  userInfoShrink?: string(name='UserInfo', description='This parameter is required.'),
}

model SubmitHotelOrderResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='CCCF2E86-D9B5-12A6-AD25-8A06933D2B0F'),
  result?: string(name='Result', example='20220809104752000114671478353329'),
  statusCode?: int32(name='StatusCode'),
}

model SubmitHotelOrderResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SubmitHotelOrderResponseBody(name='body'),
}

/**
 * @summary 提交酒店订单
 *
 * @param tmpReq SubmitHotelOrderRequest
 * @param headers SubmitHotelOrderHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return SubmitHotelOrderResponse
 */
async function submitHotelOrderWithOptions(tmpReq: SubmitHotelOrderRequest, headers: SubmitHotelOrderHeaders, runtime: $RuntimeOptions): SubmitHotelOrderResponse {
  tmpReq.validate();
  var request = new SubmitHotelOrderShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.payload)) {
    request.payloadShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.payload, 'Payload', 'json');
  }
  if (!$isNull(tmpReq.userInfo)) {
    request.userInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.userInfo, 'UserInfo', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.payloadShrink)) {
    query['Payload'] = request.payloadShrink;
  }
  if (!$isNull(request.userInfoShrink)) {
    query['UserInfo'] = request.userInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
  };
  var params = new OpenApiUtil.Params{
    action = 'SubmitHotelOrder',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/submitHotelOrder`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'json',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 提交酒店订单
 *
 * @param request SubmitHotelOrderRequest
 * @return SubmitHotelOrderResponse
 */
async function submitHotelOrder(request: SubmitHotelOrderRequest): SubmitHotelOrderResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new SubmitHotelOrderHeaders{};
  return submitHotelOrderWithOptions(request, headers, runtime);
}

model SyncDeviceStatusWithAkHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model SyncDeviceStatusWithAkRequest {
  categoryCnName?: string(name='CategoryCnName'),
  categoryEnName?: string(name='CategoryEnName', description='This parameter is required.', example='light'),
  deviceName?: string(name='DeviceName'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  location?: string(name='Location', description='This parameter is required.', example='room'),
  locationCnName?: string(name='LocationCnName'),
  number?: string(name='Number', description='This parameter is required.', example='bedLight'),
  roomNo?: string(name='RoomNo', description='This parameter is required.', example='1211'),
  switch?: int32(name='Switch', description='This parameter is required.', example='1'),
  fanSpeed?: string(name='fanSpeed'),
  mode?: string(name='mode'),
  roomTemperature?: string(name='roomTemperature'),
  temperature?: string(name='temperature'),
  value?: int32(name='value'),
}

model SyncDeviceStatusWithAkResponseBody = {
  message?: string(name='Message', example='success'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
  requestId?: string(name='requestId', example='F12B6147-5925-19E5-A3AD-E1EE1360F34E'),
}

model SyncDeviceStatusWithAkResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: SyncDeviceStatusWithAkResponseBody(name='body'),
}

/**
 * @summary 同步客控设备状态到主控设备
 *
 * @param request SyncDeviceStatusWithAkRequest
 * @param headers SyncDeviceStatusWithAkHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return SyncDeviceStatusWithAkResponse
 */
async function syncDeviceStatusWithAkWithOptions(request: SyncDeviceStatusWithAkRequest, headers: SyncDeviceStatusWithAkHeaders, runtime: $RuntimeOptions): SyncDeviceStatusWithAkResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.categoryCnName)) {
    body['CategoryCnName'] = request.categoryCnName;
  }
  if (!$isNull(request.categoryEnName)) {
    body['CategoryEnName'] = request.categoryEnName;
  }
  if (!$isNull(request.deviceName)) {
    body['DeviceName'] = request.deviceName;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.location)) {
    body['Location'] = request.location;
  }
  if (!$isNull(request.locationCnName)) {
    body['LocationCnName'] = request.locationCnName;
  }
  if (!$isNull(request.number)) {
    body['Number'] = request.number;
  }
  if (!$isNull(request.roomNo)) {
    body['RoomNo'] = request.roomNo;
  }
  if (!$isNull(request.switch)) {
    body['Switch'] = request.switch;
  }
  if (!$isNull(request.fanSpeed)) {
    body['fanSpeed'] = request.fanSpeed;
  }
  if (!$isNull(request.mode)) {
    body['mode'] = request.mode;
  }
  if (!$isNull(request.roomTemperature)) {
    body['roomTemperature'] = request.roomTemperature;
  }
  if (!$isNull(request.temperature)) {
    body['temperature'] = request.temperature;
  }
  if (!$isNull(request.value)) {
    body['value'] = request.value;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'SyncDeviceStatusWithAk',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/syncDeviceStatusWithAk`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 同步客控设备状态到主控设备
 *
 * @param request SyncDeviceStatusWithAkRequest
 * @return SyncDeviceStatusWithAkResponse
 */
async function syncDeviceStatusWithAk(request: SyncDeviceStatusWithAkRequest): SyncDeviceStatusWithAkResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new SyncDeviceStatusWithAkHeaders{};
  return syncDeviceStatusWithAkWithOptions(request, headers, runtime);
}

model UpdateBasicInfoQAHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model UpdateBasicInfoQARequest {
  checkInTime?: string(name='CheckInTime', description='This parameter is required.', example='11:11'),
  checkOutTime?: string(name='CheckOutTime', description='This parameter is required.', example='11:11'),
  hotelAddress?: string(name='HotelAddress', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  hotelIntroduction?: string(name='HotelIntroduction'),
  hotelMember?: string(name='HotelMember'),
  hotelService?: string(name='HotelService'),
  parkingExpenses?: string(name='ParkingExpenses', description='This parameter is required.'),
  parkingPosition?: string(name='ParkingPosition', description='This parameter is required.'),
  phoneNumber?: string(name='PhoneNumber', description='This parameter is required.', example='123***'),
  wifiName?: string(name='WifiName', description='This parameter is required.'),
  wifiPassword?: string(name='WifiPassword', description='This parameter is required.'),
}

model UpdateBasicInfoQAResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7***726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model UpdateBasicInfoQAResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateBasicInfoQAResponseBody(name='body'),
}

/**
 * @summary 修改基础信息问答
 *
 * @param request UpdateBasicInfoQARequest
 * @param headers UpdateBasicInfoQAHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateBasicInfoQAResponse
 */
async function updateBasicInfoQAWithOptions(request: UpdateBasicInfoQARequest, headers: UpdateBasicInfoQAHeaders, runtime: $RuntimeOptions): UpdateBasicInfoQAResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.checkInTime)) {
    body['CheckInTime'] = request.checkInTime;
  }
  if (!$isNull(request.checkOutTime)) {
    body['CheckOutTime'] = request.checkOutTime;
  }
  if (!$isNull(request.hotelAddress)) {
    body['HotelAddress'] = request.hotelAddress;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.hotelIntroduction)) {
    body['HotelIntroduction'] = request.hotelIntroduction;
  }
  if (!$isNull(request.hotelMember)) {
    body['HotelMember'] = request.hotelMember;
  }
  if (!$isNull(request.hotelService)) {
    body['HotelService'] = request.hotelService;
  }
  if (!$isNull(request.parkingExpenses)) {
    body['ParkingExpenses'] = request.parkingExpenses;
  }
  if (!$isNull(request.parkingPosition)) {
    body['ParkingPosition'] = request.parkingPosition;
  }
  if (!$isNull(request.phoneNumber)) {
    body['PhoneNumber'] = request.phoneNumber;
  }
  if (!$isNull(request.wifiName)) {
    body['WifiName'] = request.wifiName;
  }
  if (!$isNull(request.wifiPassword)) {
    body['WifiPassword'] = request.wifiPassword;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'UpdateBasicInfoQA',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/updateBasicInfoQA`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 修改基础信息问答
 *
 * @param request UpdateBasicInfoQARequest
 * @return UpdateBasicInfoQAResponse
 */
async function updateBasicInfoQA(request: UpdateBasicInfoQARequest): UpdateBasicInfoQAResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new UpdateBasicInfoQAHeaders{};
  return updateBasicInfoQAWithOptions(request, headers, runtime);
}

model UpdateCustomQAHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model UpdateCustomQARequest {
  answers?: [ string ](name='Answers'),
  customQAId?: string(name='CustomQAId', description='This parameter is required.', example='1'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  keyWords?: [ string ](name='KeyWords'),
  majorQuestion?: string(name='MajorQuestion', example='***'),
  supplementaryQuestions?: [ string ](name='SupplementaryQuestions'),
}

model UpdateCustomQAShrinkRequest {
  answersShrink?: string(name='Answers'),
  customQAId?: string(name='CustomQAId', description='This parameter is required.', example='1'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  keyWordsShrink?: string(name='KeyWords'),
  majorQuestion?: string(name='MajorQuestion', example='***'),
  supplementaryQuestionsShrink?: string(name='SupplementaryQuestions'),
}

model UpdateCustomQAResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C6***BB3E6FA'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model UpdateCustomQAResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateCustomQAResponseBody(name='body'),
}

/**
 * @summary 修改自定义问答
 *
 * @param tmpReq UpdateCustomQARequest
 * @param headers UpdateCustomQAHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateCustomQAResponse
 */
async function updateCustomQAWithOptions(tmpReq: UpdateCustomQARequest, headers: UpdateCustomQAHeaders, runtime: $RuntimeOptions): UpdateCustomQAResponse {
  tmpReq.validate();
  var request = new UpdateCustomQAShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.answers)) {
    request.answersShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.answers, 'Answers', 'json');
  }
  if (!$isNull(tmpReq.keyWords)) {
    request.keyWordsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.keyWords, 'KeyWords', 'json');
  }
  if (!$isNull(tmpReq.supplementaryQuestions)) {
    request.supplementaryQuestionsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.supplementaryQuestions, 'SupplementaryQuestions', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.answersShrink)) {
    body['Answers'] = request.answersShrink;
  }
  if (!$isNull(request.customQAId)) {
    body['CustomQAId'] = request.customQAId;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.keyWordsShrink)) {
    body['KeyWords'] = request.keyWordsShrink;
  }
  if (!$isNull(request.majorQuestion)) {
    body['MajorQuestion'] = request.majorQuestion;
  }
  if (!$isNull(request.supplementaryQuestionsShrink)) {
    body['SupplementaryQuestions'] = request.supplementaryQuestionsShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'UpdateCustomQA',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/updateCustomQA`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 修改自定义问答
 *
 * @param request UpdateCustomQARequest
 * @return UpdateCustomQAResponse
 */
async function updateCustomQA(request: UpdateCustomQARequest): UpdateCustomQAResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new UpdateCustomQAHeaders{};
  return updateCustomQAWithOptions(request, headers, runtime);
}

model UpdateHotelHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model UpdateHotelRequest {
  appKey?: string(name='AppKey', description='This parameter is required.', example='31342884'),
  estOpenTime?: string(name='EstOpenTime', example='2022-02-22 00:00:00'),
  hotelAddress?: string(name='HotelAddress'),
  hotelEmail?: string(name='HotelEmail', example='a*****@hotel.com'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='e6dd44fd16084db8a60d69fd625d9f0f'),
  hotelName?: string(name='HotelName'),
  phoneNumber?: string(name='PhoneNumber', example='130***'),
  relatedPks?: [ string ](name='RelatedPks'),
  remark?: string(name='Remark'),
  roomNum?: int32(name='RoomNum', example='4'),
  tbOpenId?: string(name='TbOpenId', description='This parameter is required.', example='AAEVK***UE3d3Z2ETwh'),
}

model UpdateHotelShrinkRequest {
  appKey?: string(name='AppKey', description='This parameter is required.', example='31342884'),
  estOpenTime?: string(name='EstOpenTime', example='2022-02-22 00:00:00'),
  hotelAddress?: string(name='HotelAddress'),
  hotelEmail?: string(name='HotelEmail', example='a*****@hotel.com'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='e6dd44fd16084db8a60d69fd625d9f0f'),
  hotelName?: string(name='HotelName'),
  phoneNumber?: string(name='PhoneNumber', example='130***'),
  relatedPksShrink?: string(name='RelatedPks'),
  remark?: string(name='Remark'),
  roomNum?: int32(name='RoomNum', example='4'),
  tbOpenId?: string(name='TbOpenId', description='This parameter is required.', example='AAEVK***UE3d3Z2ETwh'),
}

model UpdateHotelResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', description='The ID of the request.', example='46C53AEB-B19C-5C42-B32E-A726979C126F'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model UpdateHotelResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateHotelResponseBody(name='body'),
}

/**
 * @summary 修改酒店项目
 *
 * @param tmpReq UpdateHotelRequest
 * @param headers UpdateHotelHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateHotelResponse
 */
async function updateHotelWithOptions(tmpReq: UpdateHotelRequest, headers: UpdateHotelHeaders, runtime: $RuntimeOptions): UpdateHotelResponse {
  tmpReq.validate();
  var request = new UpdateHotelShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.relatedPks)) {
    request.relatedPksShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.relatedPks, 'RelatedPks', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.appKey)) {
    body['AppKey'] = request.appKey;
  }
  if (!$isNull(request.estOpenTime)) {
    body['EstOpenTime'] = request.estOpenTime;
  }
  if (!$isNull(request.hotelAddress)) {
    body['HotelAddress'] = request.hotelAddress;
  }
  if (!$isNull(request.hotelEmail)) {
    body['HotelEmail'] = request.hotelEmail;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.hotelName)) {
    body['HotelName'] = request.hotelName;
  }
  if (!$isNull(request.phoneNumber)) {
    body['PhoneNumber'] = request.phoneNumber;
  }
  if (!$isNull(request.relatedPksShrink)) {
    body['RelatedPks'] = request.relatedPksShrink;
  }
  if (!$isNull(request.remark)) {
    body['Remark'] = request.remark;
  }
  if (!$isNull(request.roomNum)) {
    body['RoomNum'] = request.roomNum;
  }
  if (!$isNull(request.tbOpenId)) {
    body['TbOpenId'] = request.tbOpenId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'UpdateHotel',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/updateHotel`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 修改酒店项目
 *
 * @param request UpdateHotelRequest
 * @return UpdateHotelResponse
 */
async function updateHotel(request: UpdateHotelRequest): UpdateHotelResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new UpdateHotelHeaders{};
  return updateHotelWithOptions(request, headers, runtime);
}

model UpdateHotelAlarmHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model UpdateHotelAlarmRequest {
  alarms?: [ 
    {
      alarmId?: long(name='AlarmId', description='This parameter is required.', example='1234567'),
      deviceOpenId?: string(name='DeviceOpenId', description='This parameter is required.', example='Pvk***VTA=='),
      roomNo?: string(name='RoomNo', example='101'),
      userOpenId?: string(name='UserOpenId', description='This parameter is required.', example='mgw/***dHQd'),
    }
  ](name='Alarms', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a381a668bc485980bed3876a75e013'),
  scheduleInfo?: {
    once?: {
      day?: int32(name='Day', example='20'),
      hour?: int32(name='Hour', example='10'),
      minute?: int32(name='Minute', example='0'),
      month?: int32(name='Month', example='9'),
      year?: int32(name='Year', example='2022'),
    }(name='Once'),
    type?: string(name='Type', description='ONCE, WEEKLY', example='ONCE'),
    weekly?: {
      daysOfWeek?: [ int32 ](name='DaysOfWeek'),
      hour?: int32(name='Hour', example='10'),
      minute?: int32(name='Minute', example='0'),
    }(name='Weekly'),
  }(name='ScheduleInfo'),
}

model UpdateHotelAlarmShrinkRequest {
  alarmsShrink?: string(name='Alarms', description='This parameter is required.'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='a7a381a668bc485980bed3876a75e013'),
  scheduleInfoShrink?: string(name='ScheduleInfo'),
}

model UpdateHotelAlarmResponseBody = {
  extentions?: map[string]any(name='Extentions'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C67BD9-175A-1324-8202-9FAABBB3E6FA'),
  result?: int32(name='Result', example='1'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model UpdateHotelAlarmResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateHotelAlarmResponseBody(name='body'),
}

/**
 * @summary 修改酒店闹钟
 *
 * @param tmpReq UpdateHotelAlarmRequest
 * @param headers UpdateHotelAlarmHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateHotelAlarmResponse
 */
async function updateHotelAlarmWithOptions(tmpReq: UpdateHotelAlarmRequest, headers: UpdateHotelAlarmHeaders, runtime: $RuntimeOptions): UpdateHotelAlarmResponse {
  tmpReq.validate();
  var request = new UpdateHotelAlarmShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.alarms)) {
    request.alarmsShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.alarms, 'Alarms', 'json');
  }
  if (!$isNull(tmpReq.scheduleInfo)) {
    request.scheduleInfoShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.scheduleInfo, 'ScheduleInfo', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.alarmsShrink)) {
    body['Alarms'] = request.alarmsShrink;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.scheduleInfoShrink)) {
    body['ScheduleInfo'] = request.scheduleInfoShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'UpdateHotelAlarm',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/updateHotelAlarm`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 修改酒店闹钟
 *
 * @param request UpdateHotelAlarmRequest
 * @return UpdateHotelAlarmResponse
 */
async function updateHotelAlarm(request: UpdateHotelAlarmRequest): UpdateHotelAlarmResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new UpdateHotelAlarmHeaders{};
  return updateHotelAlarmWithOptions(request, headers, runtime);
}

model UpdateHotelSceneBookItemHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model UpdateHotelSceneBookItemRequest {
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  updateHotelSceneBookReq?: {
    icon?: string(name='Icon', description='icon

This parameter is required.', example='https://ailabs.alibabausercontent.com/platform/28d7a91e3c05db3855725fc39e0387e7/welcome_audios/aa918294b6ca3aa115c51135bf9b80cb/l9f996sq.png'),
    id?: long(name='Id', example='1'),
    name?: string(name='Name', example='青椒肉丝'),
    price?: long(name='Price', description='This parameter is required.', example='1250'),
  }(name='UpdateHotelSceneBookReq', description='updateHotelSceneBookReq

This parameter is required.'),
}

model UpdateHotelSceneBookItemShrinkRequest {
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  updateHotelSceneBookReqShrink?: string(name='UpdateHotelSceneBookReq', description='updateHotelSceneBookReq

This parameter is required.'),
}

model UpdateHotelSceneBookItemResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7*726E'),
  result?: boolean(name='Result', example='true'),
}

model UpdateHotelSceneBookItemResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateHotelSceneBookItemResponseBody(name='body'),
}

/**
 * @summary 酒店场景预订编辑
 *
 * @param tmpReq UpdateHotelSceneBookItemRequest
 * @param headers UpdateHotelSceneBookItemHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateHotelSceneBookItemResponse
 */
async function updateHotelSceneBookItemWithOptions(tmpReq: UpdateHotelSceneBookItemRequest, headers: UpdateHotelSceneBookItemHeaders, runtime: $RuntimeOptions): UpdateHotelSceneBookItemResponse {
  tmpReq.validate();
  var request = new UpdateHotelSceneBookItemShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.updateHotelSceneBookReq)) {
    request.updateHotelSceneBookReqShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.updateHotelSceneBookReq, 'UpdateHotelSceneBookReq', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.updateHotelSceneBookReqShrink)) {
    query['UpdateHotelSceneBookReq'] = request.updateHotelSceneBookReqShrink;
  }

  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'UpdateHotelSceneBookItem',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/updateHotelSceneBookItem`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店场景预订编辑
 *
 * @param request UpdateHotelSceneBookItemRequest
 * @return UpdateHotelSceneBookItemResponse
 */
async function updateHotelSceneBookItem(request: UpdateHotelSceneBookItemRequest): UpdateHotelSceneBookItemResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new UpdateHotelSceneBookItemHeaders{};
  return updateHotelSceneBookItemWithOptions(request, headers, runtime);
}

model UpdateHotelSceneItemHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model UpdateHotelSceneItemRequest {
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  updateHotelSceneOperateReq?: {
    isUseTemplateAnswer?: boolean(name='IsUseTemplateAnswer', description='This parameter is required.', example='true'),
    operateType?: string(name='OperateType', description='This parameter is required.', example='OPEN'),
  }(name='UpdateHotelSceneOperateReq', description='updateHotelSceneReq

This parameter is required.'),
  updateHotelSceneReq?: {
    beyondLimitReply?: string(name='BeyondLimitReply'),
    deliveryMethod?: string(name='DeliveryMethod'),
    dialogueList?: [ 
      {
        dialogueId?: string(name='DialogueId', example='335'),
        noAnswer?: string(name='NoAnswer', example='对不起，暂时不提供此物品'),
        noAnswerTemplate?: string(name='NoAnswerTemplate', example='4'),
        process?: int32(name='Process', example='0'),
        question?: string(name='Question'),
        serviceId?: string(name='ServiceId', description='itemId', example='10337'),
        yesAnswer?: string(name='YesAnswer', example='纸巾1.5元，请问需要么？'),
        yesAnswerTemplate?: string(name='YesAnswerTemplate', example='4'),
      }
    ](name='DialogueList', description='This parameter is required.'),
    icon?: string(name='Icon', description='icon

This parameter is required.', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/jiudianmianban_fuwushangpintu/wupin/keyongpinlei/mianqian.png'),
    id?: long(name='Id', description='itemID', example='10337'),
    limitNumber?: long(name='LimitNumber'),
    limitSwitch?: int32(name='LimitSwitch'),
    name?: string(name='Name'),
    paymentMethod?: string(name='PaymentMethod'),
    price?: long(name='Price', description='This parameter is required.', example='165'),
    robotName?: string(name='RobotName'),
    status?: string(name='Status', description='This parameter is required.', example='已添加'),
  }(name='UpdateHotelSceneReq', description='UpdateHotelSceneReq

This parameter is required.'),
}

model UpdateHotelSceneItemShrinkRequest {
  hotelId?: string(name='HotelId', description='hotelID

This parameter is required.', example='80d84ea8ed9e422fbad52715c8fc56f1'),
  updateHotelSceneOperateReqShrink?: string(name='UpdateHotelSceneOperateReq', description='updateHotelSceneReq

This parameter is required.'),
  updateHotelSceneReqShrink?: string(name='UpdateHotelSceneReq', description='UpdateHotelSceneReq

This parameter is required.'),
}

model UpdateHotelSceneItemResponseBody = {
  code?: int32(name='Code', example='200'),
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0D0C***67DB'),
  result?: boolean(name='Result', example='true'),
}

model UpdateHotelSceneItemResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateHotelSceneItemResponseBody(name='body'),
}

/**
 * @summary 酒店场景修改（开启/关闭/编辑）
 *
 * @param tmpReq UpdateHotelSceneItemRequest
 * @param headers UpdateHotelSceneItemHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateHotelSceneItemResponse
 */
async function updateHotelSceneItemWithOptions(tmpReq: UpdateHotelSceneItemRequest, headers: UpdateHotelSceneItemHeaders, runtime: $RuntimeOptions): UpdateHotelSceneItemResponse {
  tmpReq.validate();
  var request = new UpdateHotelSceneItemShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.updateHotelSceneOperateReq)) {
    request.updateHotelSceneOperateReqShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.updateHotelSceneOperateReq, 'UpdateHotelSceneOperateReq', 'json');
  }
  if (!$isNull(tmpReq.updateHotelSceneReq)) {
    request.updateHotelSceneReqShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.updateHotelSceneReq, 'UpdateHotelSceneReq', 'json');
  }
  var query : map[string]any = {};
  if (!$isNull(request.updateHotelSceneOperateReqShrink)) {
    query['UpdateHotelSceneOperateReq'] = request.updateHotelSceneOperateReqShrink;
  }
  if (!$isNull(request.updateHotelSceneReqShrink)) {
    query['UpdateHotelSceneReq'] = request.updateHotelSceneReqShrink;
  }

  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    query = OpenApiUtil.query(query),
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'UpdateHotelSceneItem',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/updateHotelSceneItem`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 酒店场景修改（开启/关闭/编辑）
 *
 * @param request UpdateHotelSceneItemRequest
 * @return UpdateHotelSceneItemResponse
 */
async function updateHotelSceneItem(request: UpdateHotelSceneItemRequest): UpdateHotelSceneItemResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new UpdateHotelSceneItemHeaders{};
  return updateHotelSceneItemWithOptions(request, headers, runtime);
}

model UpdateMessageTemplateHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model UpdateMessageTemplateRequest {
  templateDetail?: string(name='TemplateDetail'),
  templateId?: long(name='TemplateId', description='This parameter is required.', example='123123'),
  templateName?: string(name='TemplateName'),
}

model UpdateMessageTemplateResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='43***881'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model UpdateMessageTemplateResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateMessageTemplateResponseBody(name='body'),
}

/**
 * @summary 更新消息通知模板
 *
 * @param request UpdateMessageTemplateRequest
 * @param headers UpdateMessageTemplateHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateMessageTemplateResponse
 */
async function updateMessageTemplateWithOptions(request: UpdateMessageTemplateRequest, headers: UpdateMessageTemplateHeaders, runtime: $RuntimeOptions): UpdateMessageTemplateResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.templateDetail)) {
    body['TemplateDetail'] = request.templateDetail;
  }
  if (!$isNull(request.templateId)) {
    body['TemplateId'] = request.templateId;
  }
  if (!$isNull(request.templateName)) {
    body['TemplateName'] = request.templateName;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'UpdateMessageTemplate',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/updateMessageTemplate`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 更新消息通知模板
 *
 * @param request UpdateMessageTemplateRequest
 * @return UpdateMessageTemplateResponse
 */
async function updateMessageTemplate(request: UpdateMessageTemplateRequest): UpdateMessageTemplateResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new UpdateMessageTemplateHeaders{};
  return updateMessageTemplateWithOptions(request, headers, runtime);
}

model UpdateRcuSceneHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model UpdateRcuSceneRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0c0***5eb'),
  sceneId?: string(name='SceneId', description='This parameter is required.', example='yoga'),
  sceneRelationExtDTO?: {
    corpusList?: [ string ](name='CorpusList'),
    description?: string(name='Description'),
    icon?: string(name='Icon', example='https://ailabsaicloudservice.alicdn.com/hotel/icon/changjingmoshi/shuimian.png'),
    name?: string(name='Name'),
  }(name='SceneRelationExtDTO', description='This parameter is required.'),
}

model UpdateRcuSceneShrinkRequest {
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0c0***5eb'),
  sceneId?: string(name='SceneId', description='This parameter is required.', example='yoga'),
  sceneRelationExtDTOShrink?: string(name='SceneRelationExtDTO', description='This parameter is required.'),
}

model UpdateRcuSceneResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='3A680F3A-6672-5A47-AB28-12BBCD80C679'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model UpdateRcuSceneResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateRcuSceneResponseBody(name='body'),
}

/**
 * @summary 修改酒店自定义rcu场景
 *
 * @param tmpReq UpdateRcuSceneRequest
 * @param headers UpdateRcuSceneHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateRcuSceneResponse
 */
async function updateRcuSceneWithOptions(tmpReq: UpdateRcuSceneRequest, headers: UpdateRcuSceneHeaders, runtime: $RuntimeOptions): UpdateRcuSceneResponse {
  tmpReq.validate();
  var request = new UpdateRcuSceneShrinkRequest{};
  OpenApiUtil.convert(tmpReq, request);
  if (!$isNull(tmpReq.sceneRelationExtDTO)) {
    request.sceneRelationExtDTOShrink = OpenApiUtil.arrayToStringWithSpecifiedStyle(tmpReq.sceneRelationExtDTO, 'SceneRelationExtDTO', 'json');
  }
  var body : map[string]any = {};
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.sceneId)) {
    body['SceneId'] = request.sceneId;
  }
  if (!$isNull(request.sceneRelationExtDTOShrink)) {
    body['SceneRelationExtDTO'] = request.sceneRelationExtDTOShrink;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'UpdateRcuScene',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/updateRcuScene`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 修改酒店自定义rcu场景
 *
 * @param request UpdateRcuSceneRequest
 * @return UpdateRcuSceneResponse
 */
async function updateRcuScene(request: UpdateRcuSceneRequest): UpdateRcuSceneResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new UpdateRcuSceneHeaders{};
  return updateRcuSceneWithOptions(request, headers, runtime);
}

model UpdateServiceQAHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model UpdateServiceQARequest {
  answer?: string(name='Answer'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='af7***536'),
  serviceQAId?: long(name='ServiceQAId', example='1'),
  isActive?: boolean(name='isActive', example='true'),
}

model UpdateServiceQAResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='73C67***6FA'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model UpdateServiceQAResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateServiceQAResponseBody(name='body'),
}

/**
 * @summary 修改服务设施问答
 *
 * @param request UpdateServiceQARequest
 * @param headers UpdateServiceQAHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateServiceQAResponse
 */
async function updateServiceQAWithOptions(request: UpdateServiceQARequest, headers: UpdateServiceQAHeaders, runtime: $RuntimeOptions): UpdateServiceQAResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.answer)) {
    body['Answer'] = request.answer;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.serviceQAId)) {
    body['ServiceQAId'] = request.serviceQAId;
  }
  if (!$isNull(request.isActive)) {
    body['isActive'] = request.isActive;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'UpdateServiceQA',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/updateServiceQA`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 修改服务设施问答
 *
 * @param request UpdateServiceQARequest
 * @return UpdateServiceQAResponse
 */
async function updateServiceQA(request: UpdateServiceQARequest): UpdateServiceQAResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new UpdateServiceQAHeaders{};
  return updateServiceQAWithOptions(request, headers, runtime);
}

model UpdateTicketHeaders {
  commonHeaders?: map[string]string,
  xAcsAligenieAccessToken?: string(name='x-acs-aligenie-access-token'),
  authorization?: string(name='Authorization'),
}

model UpdateTicketRequest {
  groupKey?: string(name='GroupKey', description='This parameter is required.', example='2023***93975'),
  hotelId?: string(name='HotelId', description='This parameter is required.', example='520a0c0***5eb'),
  status?: string(name='Status', description='This parameter is required.', example='waiting'),
}

model UpdateTicketResponseBody = {
  message?: string(name='Message', example='success'),
  requestId?: string(name='RequestId', example='0EC7***726E'),
  result?: boolean(name='Result', example='true'),
  statusCode?: int32(name='StatusCode', example='200'),
}

model UpdateTicketResponse = {
  headers?: map[string]string(name='headers'),
  statusCode?: int32(name='statusCode'),
  body?: UpdateTicketResponseBody(name='body'),
}

/**
 * @summary 修改工单
 *
 * @param request UpdateTicketRequest
 * @param headers UpdateTicketHeaders
 * @param runtime runtime options for this request RuntimeOptions
 * @return UpdateTicketResponse
 */
async function updateTicketWithOptions(request: UpdateTicketRequest, headers: UpdateTicketHeaders, runtime: $RuntimeOptions): UpdateTicketResponse {
  request.validate();
  var body : map[string]any = {};
  if (!$isNull(request.groupKey)) {
    body['GroupKey'] = request.groupKey;
  }
  if (!$isNull(request.hotelId)) {
    body['HotelId'] = request.hotelId;
  }
  if (!$isNull(request.status)) {
    body['Status'] = request.status;
  }

  var realHeaders : map[string]string = {};
  if (!$isNull(headers.commonHeaders)) {
    realHeaders = headers.commonHeaders;
  }
  if (!$isNull(headers.xAcsAligenieAccessToken)) {
    realHeaders['x-acs-aligenie-access-token'] = $JSON.stringify(headers.xAcsAligenieAccessToken);
  }
  if (!$isNull(headers.authorization)) {
    realHeaders['Authorization'] = $JSON.stringify(headers.authorization);
  }
  var req = new OpenApiUtil.OpenApiRequest{ 
    headers = realHeaders,
    body = OpenApiUtil.parseToMap(body),
  };
  var params = new OpenApiUtil.Params{
    action = 'UpdateTicket',
    version = 'ip_1.0',
    protocol = 'HTTPS',
    pathname = `/v1.0/ip/updateTicket`,
    method = 'POST',
    authType = 'AK',
    style = 'ROA',
    reqBodyType = 'formData',
    bodyType = 'json',
  };
  if ($isNull(@signatureVersion) || @signatureVersion != 'v4') {
    return callApi(params, req, runtime);
  } else {
    return execute(params, req, runtime);
  }
}

/**
 * @summary 修改工单
 *
 * @param request UpdateTicketRequest
 * @return UpdateTicketResponse
 */
async function updateTicket(request: UpdateTicketRequest): UpdateTicketResponse {
  var runtime = new $RuntimeOptions{};
  var headers = new UpdateTicketHeaders{};
  return updateTicketWithOptions(request, headers, runtime);
}

